2012-03-12 84 views
0

我有一個超過100萬條記錄的MyIsam表。我需要更新這個表的每一行。我正在批量處理記錄,並且我爲它編寫了一種多線程腳本。腳本的每個線程只處理一批記錄。如何同時更新MyIsam表?

現在的問題是兩個批處理同時運行時,一個更新正在等待另一個更新完成。是否有可能避免這種延遲?特別是可以同時更新數據庫中的記錄嗎?

在我的情況下,沒有行取決於其他行,它不會被重新寫入。

我已閱讀關於TL_WRITE_ALLOW_WRITE。但不知道如何實現它?

任何人都可以爲此提出一個最佳解決方案。

回答

1

不幸的是,你不能用MyIsam表來做到這一點,因爲任何編輯嘗試都會鎖定表。在InnoDB上,你可以做到這一點。

+0

我實際上試圖將我的表格轉換爲InnoDb並運行作業。它需要比myIsam更多的時間。 – codlib 2012-03-12 07:31:39

+0

InnoDB在相同情況下具有更好的性能。您的表是否正確編制索引?您是否比較InnodBD和MyISAM之間的EXPLAIN查詢? – rkosegi 2012-03-12 08:10:27