Mysql载入大量数据(load data infile)的优化过程

公司开发的某个产品需要从文本格式的文件导入大量数据, 其中某一个表特别大, 数据文件有接近30G, 大概有6千万行数据. MySQL提供了很强大的工具, load data infile, 具体格式不去介绍了, 它的主要优势在于批量插入数据.

服务器是20核 cpu.

MySQL 部分配置大概如下:

innodb_buffer_pool_size = 20000M

innodb_file_per_table = 1
innodb_flush_method = O_DIRECT

innodb_flush_log_at_trx_commit = 0

直接开始load数据,  结果悲剧开始了, 命令执行了1个小时,没结果,  2个小时, 还是没结果.

开另外一个终端连到数据库, 查询当前表的行数, 结果是0,  说明 load data infile是一个transaction, 在当前的隔离级别下, 没load完是看不到数据的.

用TOP看了一下资源使用情况, MySQL 只使用了接近100%的CPU(最高2000%).

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值