资讯专栏INFORMATION COLUMN

mysql load大表一直无法成功优化问题处理

IT那活儿 / 2113人阅读
mysql load大表一直无法成功优化问题处理

  生产背景

生产环境为主从架构,每月业务都会load几千万的数据到同一张表,该表的数据是按月做了分区。


  现象

Mysql数据库中通过load向一张空表中导入5000万数据,总大小25G左右,分成87个文件依次导入,从第一个文件开始保持30秒左右,后续load时间持续增长一直到75个文件后每个load的市场基本都在1000s以上,一直到83个文件的几个小时都无法成功load数据到mysql数据库。

Mysql主机资源情况如下所示:

CPU8

内存:32G

Innodb_buffer_pool_size24G


慢查询日志中load时长情况如下所示:

Showprocesslist状态如下所示:

60多万数据load了一个多小时后直接kill回退了,如下所示:


  分析过程

通过表结构查看该表:

通过showcreate table table_nmae核实到该表有个联合主键和联合索引;

然后由于load的原理是跳过SQL解析,直接生成数据库的数据文件,导入前关闭索引,导入完成后更新索引;可以得出该表的索引是影响性能的主要原因。然后通过与前台业务沟通知道业务对该表的查询条件只有两个字段,然后与业务沟通后决定去掉索引重建一个联合主键保证业务的查询速度。

如下图所示:

验证结果:

表结构优化load5000万数据分成68个文件后load时长都在40s以内,如下图日志记录所示:


END


文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129952.html

相关文章

  • 低调奢华有内涵 - 收藏集 - 掘金

    摘要:比较的是两个对象的内容是并发编程之协程异步后端掘金引言随着的盛行,相信大家今年多多少少都听到了异步编程这个概念。使用进行并发编程篇二掘金我们今天继续深入学习。 python 之机器学习库 scikit-learn - 后端 - 掘金一、 加载sklearn中的数据集datasets from sklearn import datasets iris = datasets.load_i...

    walterrwu 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<