今天给一个MyISAM的大表加索引,临时表MYD文件的大小增长非常慢,到了MYD文件创建完成后,却发现MYI文件很小,ALTER TABLE语句始终不能结束,登录MYSQL查看show processlist;发现,ALTER TABLE语句在“Repair with keycache”状态。
于是想到,myisam_max_sort_file_size参数我们设置的是10G,但是现在这个文件正好>10G一点点,于是不能用tmpdir指定的目录排序索引。于是增加myisam_max_sort_file_size参数到20G,再次ALTER TABLE,首先MYD文件的创建速度就快了非常多,MYD文件创建结束后,MYI文件开始增长,查看processlist,发现在“Repair by sorting”状态,很快表创建完成。
如果遇到类似的情况,你可以一试。

===========================================================================================================

###########################################################################################################

===========================================================================================================

摘自:http://rainbowbridg.itpub.net/post/23663/504744

今天一个朋友让我帮他处理以下1张3.78亿数据的表,需要导出2010年的数据到另外1张表,我查了下2010年的数据就有1.8,然后我修改了一下my.cnf的部分参数:

myisam_sort_buffer_size = 1024M
tmp_table_size = 256M

tmpdir = /back1/dzy_bak
myisam_max_sort_file_size=20G

注意:/back1/dzy_bak这个目录需要chown mysql:mysql /back1/dzy_bak