2014-08-27 60 views
1

數據庫插入速度,我在哪裏,我遷移數百萬或記錄從源數據庫到目標數據庫彈簧批處理應用程序的工作。在將記錄插入到目標數據庫時,我在批量插入(每批1000個)中執行此操作,並以這種方式在一秒鐘內插入大約3000。節流(降低)在Spring應用程序

目標DB型 - MS SQL Server 2012中, JDBC驅動程序 - JTDS

現在,我有,我應該能減少(未改善)的要求遷移率的表現說,1000條記錄中1秒而不是插入3000.有沒有一種直接的方式來做到這一點,無論是在春季使用JDBC驅動程序或任何其他配置?

感謝,

+0

只是一些想法,你可以:1.刪除索引2.使用Insert語句代替3.降低網絡帶寬4.增加網絡延遲(VPN) – nshah 2014-08-27 16:35:36

回答

1

我會用番石榴的RateLimiter

這很簡單。實例在某個地方(可能是因爲一個Spring bean):

double CALLS_PER_SECOND = 100; 

RateLimiter rateLimiter = RateLimiter.create(CALLS_PER_SECOND); 

然後用它在你的循環:

rateLimiter.acquire(); 

你真的不能做記錄/秒,但你可以做字節/秒或呼叫/秒。

+0

謝謝,這就是我正在尋找.. – sampath 2014-08-27 20:48:20

0

查詢管理類似於Oracle中的限制選項:Link

資源調控,您可以設置服務器的最小和最大內存:Link2

+0

你可以如何使用這些配置從一個Java應用程序更具體.. – sampath 2014-08-27 18:28:35

2

相信我,這是降低性能比改善性能要容易得多。 春天批處理應用程序,最簡單的方法是在例如你ItemWriter實現再睡會兒。

+0

聽起來像是我的解決方案。將嘗試它,讓你知道.. – sampath 2014-08-27 18:29:37