我有一张相当简单的桌子
requestparams (
requestid varchar(64) NOT NULL,
requestString text,
) ENGINE=MyISAM;
使用“LOAD DATA”填充表后,我正在更改架构并将“requestid”设为主键。
该表有1100万行,数据大小小于2GB(MYD文件的大小)。处理结束时索引文件大小约为600M。
在我的笔记本电脑上创建索引只需不到 20 分钟。但是,当我在 Amazon 的 EC2(中型实例)上运行该过程时,该过程花费了超过 12 个小时。整个过程中,磁盘处于超级繁忙的IO等待状态(如下图所示)top
)在 40-100% 之间。 CPU 大部分时间都处于空闲状态。我不认为 EC2 上的磁盘那么慢。
在 MySQL 邮件列表上,一些人建议更改服务器变量 myisam_sort_buffer_size 和 myisam_max_sort_file_size。我将它们分别设置为 512MB 和 4GB。但索引创建同样缓慢。事实上,MySQL的内存使用量很少超过40M。
我该如何解决?
解决方案:增加“key_buffer_size”有帮助。我将此值设置为 1GB,该过程在 4 分钟内完成。确保使用以下命令验证新设置mysqladmin variables
命令。
您收到的建议是正确的。我怀疑您所做的更改实际上并未生效。尝试在 my.cnf 中进行更改并重新启动服务器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)