Php
MySQL 表鎖解決方案 -> InnoDb / Partitions
我在一個非常大的 MyISAM MySQL 表(Constx10xGB 和 15M 行)中遇到了許多表鎖。
這主要是由於許多沉重的刀片造成的。我目前優化的想法:
- 更改為 Innodb - 以避免表級鎖定。過去我對 Innodb 的體驗很糟糕,可能是由於配置不當。如果您推薦此選項,請提供有關配置的建議。
- 添加分區 - 我們在一台伺服器上執行,並且我們在 HD 中沒有不同的掛載,所以我們只是在這樣的解決方案中避免鎖定。目前該表不是“鍵值”,但可以完成(標準化為不同的表)。
您會推薦哪個/其他選項?
謝謝。
絕對要使用 InnoDB,尤其是升級到 MySQL 5.5(如果您還沒有執行它並且如果可能的話)。InnoDB 5.5 的性能有很多改進。
坦率地說,InnoDB 可以輕鬆處理 10GB 和 1500 萬行的表的案例。適當的調整是另一個問題的東西!
不過附帶說明一下,即使您將其分區並保留為 MyISAM,您仍然會遇到表鎖定問題。
例如,從已分區的 MyISAM 表中的 SELECT 會導致鎖定整個表。