And*_*rew 50 mysql performance alter
我有一个表有170,002,225行,约35列和两个索引.我想添加一个列.alter table命令大约需要10个小时.在那段时间内,处理器似乎都不忙,也没有过多的IO等待.这是一款带有大量内存的4路高性能盒子.
这是我能做的最好的吗?有什么我可以看一下在调整db时优化add列吗?
RRU*_*RUZ 38
我过去遇到了类似的情况,我以这种方式改善了操作的性能:
INSERT INTO new_table (column1,..columnN) SELECT (column1,..columnN) FROM current_table;
小智 6
ALTER TABLE
在MySQL中,实际上是要创建一个包含新模式的新表,然后重新获取INSERT
所有数据并删除旧表.您可以通过创建新表,加载数据然后重命名表来节省一些时间.
来自"高性能MySQL书"(percona人):
有效加载MyISAM表的常用技巧是禁用密钥,加载数据和插入密钥:
mysql> ALTER TABLE test.load_data DISABLE KEYS;
-- load data
mysql> ALTER TABLE test.load_data ENABLE KEYS;
Run Code Online (Sandbox Code Playgroud)
也许您可以在更改表之前删除索引,因为构建索引需要花费大部分时间?
归档时间: |
|
查看次数: |
31979 次 |
最近记录: |