2012-09-14 44 views
1

我有一個相對較大的表(幾百萬條記錄),多個網站都在查詢此表,並且從一開始,表的引擎就是MyISAM,目前我遇到了表困難鎖。即時更換MySQL表引擎

所以。我決定將Table引擎從MyISAM更改爲InnoDB。

問題:那裏有沒有隱藏的石頭?數據庫是活的。所以我需要確保它不會影響任何網站的功能。

此表中目前沒有設置全文索引。

+0

http://stackoverflow.com/a/4241188/497982 – Nathan

+1

另外,我建議您閱讀[將其他存儲引擎的錶轉換爲'InnoDB'](http://dev.mysql.com/doc/en/converting-tables-to-innodb.html)。 – eggyal

+0

@Nathan我沒有改變引擎的問題,我只是想確保沒有超級穀物會發生:o) – rinchik

回答

1

基本上,你必須這樣做:

ALTER TABLE t1 ENGINE=InnoDB; 

或本:

INSERT INTO my_innodb_table SELECT * FROM my_myisam_table 

檢查:Converting Tables from Other Storage Engines to InnoDB對此事的考慮,特別是:

的InnoDB沒有針對獨立索引 的特殊優化創建MyISAM存儲引擎的方式e確實。因此, 不支付導出和導入表格並在之後創建索引。 將表更改爲InnoDB的最快方法是直接向InnoDB表插入 。也就是說,使用ALTER TABLE ... ENGINE = INNODB,或者創建擁有相同 定義一個空InnoDB表,然後插入行用INSERT INTO ... SELECT * FROM ....

此外,這些: http://dev.mysql.com/doc/refman/5.1/en/alter-table.html http://dev.mysql.com/doc/refman/5.1/en/forcing-innodb-recovery.html