我正在開發spring-mvc應用程序。處理超過100k條記錄的數據
我必須處理超過10萬條數據記錄的要求。我不能讓它依賴數據庫,所以我必須在java中實現所有的邏輯。
現在我創建的線程數,每個線程來處理分配的發言權1000條記錄。
我使用org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor
。
列表項
問:
- 建議數,我應該使用的線程。
-
- 我應該平分的記錄數量的線程之間或
- 我應該給的記錄預定數量給每個線程,增加線程數?
- ThreadPoolTaskExecutor類是確定的,或者我應該用別的東西嗎?
- 我應該維護分配給java或數據庫中每個線程的記錄ID嗎? (注意:如果使用數據庫的話,我必須作出額外的數據庫調用每個記錄和處理該記錄後更新)
任何一個可以請建議我在這種情況下的最佳實踐。
任何類型的建議都會很棒。
注意:執行時間是主要關心的問題。
更新:
處理包括數據庫調用的擁抱數量。 意味着你可以認爲它是在java中完成的搜索。取一條記錄,然後比較(在java中)該記錄與來自db的其他記錄。然後再次採取另一個記錄,並做同樣的事情。
計算和I/O之間的平衡是什麼?如果你只是用一個線程來運行它,處理器(或處理器)有多忙?多線程會產生成本 - 如果您按順序閱讀,操作系統可能會更好地執行預取。 – 2014-11-05 07:22:41
這一切都取決於「處理記錄」的含義。任務IO綁定還是CPU綁定?如果您需要每個線程的數據庫連接,那麼您的池中有多少個數據庫連接?你用一根線測量了花費的時間嗎?因爲100K不是*那麼多。 – 2014-11-05 07:24:04
請找到我更新的問題。 – 2014-11-05 07:37:11