mysql大表建索引的问题
mysql 有个600g表 想建索引
看了手册
先用myisamchk --keys-used=0 -rq /path/to/db/tbl_name禁索引
再用myisamchk -r -q /path/to/db/tbl_name建索引
物理内存一共30g
在myv.cnf里设置了 [myisamchk]的参数
sort_buffer_size=20g
key_buffer_size=8g
read_buffer_size=4g
write_buffer_size=4g
足够的tmpdir
但是运行 myisamchk --keys-used=0 -rq /path/to/db/tbl_name 建索引的时候
用top观察 virt和RES 显示却都是3g
问题是为什么只用了3g的内存?是不是参数有问题?
多谢各位了
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
我看到一个文章上说
Repair by sort.的时候 更多是和sort_buffer_size参数有关
http://www.mysqlab.net/knowledge/kb/detail/topic/myisam/id/5183
The second set of variables that are significant is the myisam_max_sort_file_size and the myisam_max_extra_sort_file_size. myisam_max_sort_file_size is the maximum size of the temporary file MySQL is allowed to use while re-creating a MyISAM index when using the sort method.
Also, if the size of the temporary file needed to use the sort method exceeds key_buffer + myisam_max_extra_sort_file_size the slower key cache based method will be used.
我观察到临时空间用的很多唉
睡觉 明天吧key_buffer 加大到20g看看
多谢各位
1 key_buffer 加大到15g还是一样
2 read_buffer_size=4g
write_buffer_size=4g
但是运行时候报这个参数被自动调整到2g了
关键现在太慢了
要是只用那么多内存 能很快完成也没话说了
没有办法能快点吗
还有个方法是alter table disable/ enable keys
也设置了类似的参数 但是这样做更慢
请问各位 你们平时都是怎么做的
我的猜测可能是
read_buffer_size=4g
write_buffer_size=4g
的限制造成的。
设置key_buffer = 20G
引用来自#5楼“ssggg”的帖子
现在内存也不值钱了吧
内存都快要当硬盘用了 呵呵
关键现在有资源用不上 着急哎
现在内存也不值钱了吧
内存都快要当硬盘用了 呵呵
关键现在有资源用不上 着急哎
30G的内存,太奢侈了,匀点给我吧,呜呜,oschina的服务器才4G啊,还要跑tomcat :(
用不到那么大的内存,正常的吧