我有一個表超過1.6億的條目,其中有一個錯誤的表引擎,所以我要改變引擎。 當我這樣做沒有任何準備,我得到一個錯誤,由於我的緩衝區的大小,因爲有太多的行鎖將一個表鎖鎖定行鎖定
mysql> ALTER TABLE foobar ENGINE=MyISAM;
ERROR 1206 (HY000): The total number of locks exceeds the lock table size
我現在想這個動作之前鎖定整個表,後來解開整個表的。
mysql> LOCK TABLES foobar WRITE;
我的問題:請問MySQL服務器通知鎖定表已經是活動的,並跳過行級鎖或有它鎖定表,現在也可以再次鎖定每一行,我會再次遇到同樣的錯誤?
我也打開任何其他sugestions如何改變這麼大的(和更大)表的發動機的最快方法:)
檢查pt-online-schema-change工具。它也應該解決你的問題。但MyISAM ......你不關心你的數據,是嗎? :) – akuzminsky
感謝您對該工具的建議!我更喜歡在沒有任何第三方工具的情況下更改引擎,但也許沒有其他方法可以解決此問題。順便說一句:每個工具都能完成工作;) - MyISAM也是如此。所以要回答你的問題:不,在這種情況下,我實際上並沒有,它實際上是一個緩存表,但無論如何...問題是更多的關於後臺進程和理解,如果MySQL表跳過行鎖定,如果表鎖定已經激活: ) – Preexo