我有一個Java應用程序,其中15個線程通過名爲getNext()的同步方法從包含11,000條記錄的表中選擇一行,線程在選擇行時變慢,多少時間。每個線程遵循以下過程:從數據庫優化的多線程選擇行
線程檢查是否存在具有恢復列值設置爲1的行。
答:如果它存在,線程將獲取該行的id並使用該id來選擇id大於獲取id的另一行。
B.否則,它選擇與ID的行大於0
根據在上述1所述的步驟的結果接收到的最後一行被標記設置爲1。
- 恢復柱
線程獲取行數據並對其進行處理。
問:
- 如何多線程訪問thesame表中選擇行另一個線程沒有選擇和快?
- 在任何線程選擇的最後一行發生崩潰的情況下,如何恢復線程?
我使用MySQL – John
下面是這個MySQL的方法:HTTP: //dev.mysql.com/doc/refman/5.0/en/innodb-locking-reads.html – Martin
現在,您將不得不關閉自動提交功能,並運行select for update(或在共享模式下選擇鎖定),具體取決於根據你的需求,並且直接更新狀態,以便其他線程不能接受並執行提交。 – Martin