2014-02-26 61 views
0

我有mysql中的innodb表,少於200萬條記錄和數據+索引大小約爲1.5 GB 我需要執行alter table向表中添加一行。每當我在做alter table mysql時,總是在複製到temptable。 數據庫機器有100 GB的RAM,所以我期望alter table應該在內存中執行。 我已經設置:爲什麼mysql更改表總是複製到可修改的?

tmp_table_size = 10G 
max_heap_table_size = 10G 
sort_buffer_size = 10G 
innodb_buffer_pool_size=50G 

但是這並沒有幫助。我如何配置mysql以避免複製到臨時表?

+0

什麼是您的服務器的版本? –

+0

服務器版本:5.5.24 – user1209304

+0

什麼是您的服務器。贏/ * nix中? –

回答

2

MySQL在任何情況下都不會在內存中執行ALTER TABLE。向表中添加新列需要創建新表(使用新模式),將舊錶中的所有行復制到新表中,並自動交換舊錶和新表。取決於MySQL版本,某些類型的ALTER TABLE(如添加新索引)可能可以在「在線」中完成,其中操作期間其他操作未被阻止。然而,這仍然是「盤上」關於你的問題。