我正在开发一个Spring Batch应用程序,其中将数百万或记录从源db迁移到目标db。在将记录插入目标数据库时,我正在批量插入(每批1000个),这样它大约在一秒钟内插入3000个。
目标数据库类型-MS SQL Server 2012,
JDBC驱动程序-JTDS
现在,我有一个要求,我应该能够降低(而不是提高)迁移率的性能,例如在1秒钟内记录1000条记录,而不是插入3000条记录。是否有使用JDBC驱动程序或任何其他方法来做到这一点的简单方法在春季配置?
谢谢,
最佳答案
我会用番石榴的RateLimiter。
很简单将其实例化(可能是作为Spring bean):
double CALLS_PER_SECOND = 100;
RateLimiter rateLimiter = RateLimiter.create(CALLS_PER_SECOND);
然后在循环中使用它:
rateLimiter.acquire();
您实际上无法每秒进行记录,但是可以每秒进行字节或呼叫每秒。