mysql 导入大量数据Repair with keycache

 

             恢复MySQL数据库的工作,但也因为一直被这个问题困扰,导致进度缓慢。简单来说,如果我们希望对MySQL restore比较大的数据备份,可能会发生这种情况。对于我来讲,需要恢复的库中有一个表解压后超过了100GB,而我的服务器是500GB的SSD,想着恢复总大小为270GB的数据,怎么都够了,但实际上发现,影响数据库restore最重要的问题就是硬盘的空间。

据StackOverflow上这个页面里介绍:https://stackoverflow.com/questions/1067367/how-to-avoid-repair-with-keycache

MySQL will use repair by keycache for MyISAM tables whenever the maximum possible size of the tables indexes are greater than the value for the variable myisam_max_sort_file_size.

You can calculate the maximum size of the index by adding up the byte size values for all keys in all the indexes and multiplying that by the number of rows in your table.

    简单估算一下Repair by sorting所需要的硬盘空间,我不太了解我需要导入的表的结构,从我这里来看,即便设置成200GB(100GB的两倍),还是会发生Repair with keycache。另外,由于我工作在32G内存的机器上,本来想着myisam_sort_buffer_size可以设置更大一些,另外还设置了超过一个repair线程,但是发现,如果MySQL获取不到这里面配置的足够的内存,将立刻转为Repair with keycache。所以,对于非常大的表而言,足够的硬盘空间,比其他因素更能影响restore的速度。
 

最终是这样设置的:

myisam_max_sort_file_size = 200G
myisam_sort_buffer_size = 4096M
myisam_repair_threads = 1

Mysql导入大表文件时注意修改参数

set global max_allowed_packet=100000000;

set global net_buffer_length=100000;

SET GLOBAL interactive_timeout=28800000;

SET GLOBAL wait_timeout=28800000;

SET GLOBAL myisam_max_sort_file_size=268435456000;

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值