首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >大批量合并insert导致的MySQL性能问题分析

大批量合并insert导致的MySQL性能问题分析

原创
作者头像
于航
修改2019-07-25 11:52:45
1.9K0
修改2019-07-25 11:52:45
举报

问题反馈

用户反馈insert待入库的队列堆积,当前还有1000W+的insert在消息队列中等待入口,请求堆积严重,怀疑数据库性能有问题

入库队列拥堵值
入库队列拥堵值

用户质疑

分析如下两张图中的时间点,那么如果是因为大量合并insert导致的IO瓶颈,那么下午两点的时候,宿主机IO负载降低到正常水平时,通过分析慢查询日志,发现insert指令执行反而更慢,拥塞反而更严重?

错误码、业务量级、入库队列拥堵值
错误码、业务量级、入库队列拥堵值
实例维度以及宿主机维度的信息
实例维度以及宿主机维度的信息

排查问题

show processlist发现,有大量合并后的批量insert

实例活跃线程
实例活跃线程

查看云控制台和后台监控信息,可以看到IO已经打满了

实例维度以及宿主机维度的磁盘写入监控图
实例维度以及宿主机维度的磁盘写入监控图

查看实例详细的数据监控,我们可以看到

实例详细监控数据
实例详细监控数据

解答客户疑惑:

  • 为什么只有故障那天异常,客户一直都是如此使用的,之前的时候队列不会如此拥塞?

由于批量合并insert超出了吞吐极限,导致写了磁盘,导致了出现异常,异常原因及原理参考上面截图

-当宿主机IO负载降低到正常水平时,通过分析慢查询日志,发现insert指令执行反而更慢,拥塞反而更严重

上午磁盘IO高的原因是请求在正常执行,写log buffer都是写内存,下午磁盘IO低的原因是写了物理磁盘,导致请求堆积,请求处理变慢,比如之前每秒处理10个请求,当然IO也高,由于SQL执行快因此队列不拥堵,但是一旦log buffer写满了,要写物理盘,那么现在每秒处理1个请求,IO当然会降低,队列肯定会拥堵

解决方案

  • insert合并量级调整,从200调整到50(客户已完成)
  • 大量insert插入对宿主机磁盘IO性能要求较高,迁移至宿主机IO利用率低的迁移
  • 该库还做运营查询,因为写入量太大,容易拥塞,建议读写分离
  • 业务层做水平拆分,把对于一个实例的写入请求拆分到多个实例

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题反馈
  • 用户质疑
  • 排查问题
  • 解决方案
相关产品与服务
专用宿主机
专用宿主机(CVM Dedicated Host,CDH)提供用户独享的物理服务器资源,满足您资源独享、资源物理隔离、安全、合规需求。专用宿主机搭载了腾讯云虚拟化系统,购买之后,您可在其上灵活创建、管理多个自定义规格的云服务器实例,自主规划物理资源的使用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档