生产背景
生产环境为主从架构,每月业务都会load几千万的数据到同一张表,该表的数据是按月做了分区。
现象
Mysql数据库中通过load向一张空表中导入5000万数据,总大小25G左右,分成87个文件依次导入,从第一个文件开始保持30秒左右,后续load时间持续增长一直到75个文件后每个load的市场基本都在1000s以上,一直到83个文件的几个小时都无法成功load数据到mysql数据库。
Mysql主机资源情况如下所示:
CPU:8
内存:32G
Innodb_buffer_pool_size:24G
慢查询日志中load时长情况如下所示:
Showprocesslist状态如下所示:
60多万数据load了一个多小时后直接kill回退了,如下所示:
分析过程
通过表结构查看该表:
通过showcreate table table_nmae核实到该表有个联合主键和联合索引;
然后由于load的原理是跳过SQL解析,直接生成数据库的数据文件,导入前关闭索引,导入完成后更新索引;可以得出该表的索引是影响性能的主要原因。然后通过与前台业务沟通知道业务对该表的查询条件只有两个字段,然后与业务沟通后决定去掉索引重建一个联合主键保证业务的查询速度。
如下图所示:
验证结果:
表结构优化load5000万数据分成68个文件后load时长都在40s以内,如下图日志记录所示:
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/129952.html
摘要:比较的是两个对象的内容是并发编程之协程异步后端掘金引言随着的盛行,相信大家今年多多少少都听到了异步编程这个概念。使用进行并发编程篇二掘金我们今天继续深入学习。 python 之机器学习库 scikit-learn - 后端 - 掘金一、 加载sklearn中的数据集datasets from sklearn import datasets iris = datasets.load_i...
阅读 1250·2023-01-11 13:20
阅读 1559·2023-01-11 13:20
阅读 1013·2023-01-11 13:20
阅读 1680·2023-01-11 13:20
阅读 3972·2023-01-11 13:20
阅读 2520·2023-01-11 13:20
阅读 1356·2023-01-11 13:20
阅读 3486·2023-01-11 13:20