Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >大批量合并insert导致的MySQL性能问题分析

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

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

问题反馈

用户反馈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 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Redis详解(6)性能监控:问题分析和优化
尤其redis这类敏感的纯内存、高并发和低延时的服务,一套完善的监控告警方案,是精细化运营的前提。
黄规速
2022/04/14
3.5K0
Redis详解(6)性能监控:问题分析和优化
MySQL Insert语句单个批次数量过多导致的CPU性能问题分析
最近有台服务器比较频繁的CPU报警,表现的特征有CPU sys占比偏高,大量慢查询,大量并发线程堆积。后面开发对insert的相关业务限流后,服务器性能恢复正常。
星哥玩云
2022/08/17
1.3K0
MySQL Insert语句单个批次数量过多导致的CPU性能问题分析
哪些因素会导致 MySQL 慢查询
不管是开发同学还是DBA,想必大家都遇到慢查询(select,update,insert,delete 语句慢),影响业务稳定性。这里说的慢,有两个含义一是比正常的慢,有可能正常执行时间是10ms,异常的是100ms 。二是sql执行时间超过设置的慢查询标准比如500ms。
霍格沃兹测试开发Muller老师
2022/12/16
8840
哪些因素会导致慢查询?
不管是开发同学还是DBA,想必大家都遇到慢查询(select,update,insert,delete 语句慢),影响业务稳定性。这里说的慢,有两个含义一是比正常的慢,有可能正常执行时间是10ms,异常的是100ms 。二是sql执行时间超过设置的慢查询标准比如500ms。
用户1278550
2019/06/03
1.4K0
Java应用之性能测试瓶颈调优
在实际的性能测试中,会遇到各种各样的问题,比如 TPS 压不上去等,导致这种现象的原因有很多,测试人员应配合开发人员进行分析,尽快找出瓶颈所在。
用户4283147
2022/10/27
1.8K0
Java应用之性能测试瓶颈调优
从Zabbix到Prometheus,同程艺龙数据库监控系统的实践
闫晓宇,同程艺龙数据库技术专家,具有多年互联网行业DB运维经验,在游戏、O2O及电商行业从事过DBA运维工作。2016年加入同程艺龙,目前在团队负责数据库架构设计及优化、运维自动化、MySQL监控体系建设、DB私有云平台设计及开发工作。
用户1278550
2019/10/28
2.1K1
从Zabbix到Prometheus,同程艺龙数据库监控系统的实践
『互联网架构』软件架构-rocketmq之性能测试(63)
PS:对于架构来说rocketMq的性能至关重要,只要用到消息队列的都是比较核心的应用,所以很多东西需要处理。
IT架构圈
2019/05/31
1.3K0
011.MongoDB性能监控
MongoDB自带了mongostat 和 mongotop 这两个命令来监控MongoDB的运行情况。这两个命令用于处理MongoDB数据库变慢等等问题非常有用,能详细的统计MongoDB当前的状态信息。除此之外,还可以用db.serverStatus()、db.stats()、开启profile功能通过查看日志进行监控分析。
木二
2019/07/01
2.7K0
一次TiDB GC阻塞引发的性能问题分析
前不久从项目一线同学得到某集群的告警信息,某个时间段 TiDB duration 突然异常升高,持续时间6小时左右,需要定位到具体原因。
HOHO
2022/12/21
5610
一次TiDB GC阻塞引发的性能问题分析
MySQL 案例:Threads_running 与慢查询
年前本应该是回顾一年工作和收尾的阶段,奈何各种促销,活动都等着春节,因此也遇到了不少的问题,回顾了一下最近遇到的问题,发现有好几个问题比较类似,正好整理一下,作为年前收尾的案例吧。表现上都是数据库假死,无响应,发生的场景有较高的业务压力到来时,也有业务正常运行的时候,突然就出现问题了。
王文安@DBA
2021/02/03
4.3K0
MySQL 案例:Threads_running 与慢查询
Linux性能异常经典案例分析之D进程
在分享案例之前,我们需要先了解几个概念:什么是平均负载?什么是D进程?什么是Z进程?TOP命令输出信息含义是什么?iostat命令输出的含义是什么?
Power
2025/02/28
1720
产线问题分析与解决系列:5RocketMQ消息积压问题的解决方案:动态队列分配的应用
场景:会议室中,小李、老张和李总正在讨论美国业务作业高峰期RocketMQ消息堆积告警问题。
李福春
2025/07/01
650
产线问题分析与解决系列:5RocketMQ消息积压问题的解决方案:动态队列分配的应用
linux服务器性能问题相关排查手册(总结向)
定义:平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数,和 CPU 使用率并没有直接关系。换言之,要计算 CPU 负载的值,只考虑正在运行或等待分配 CPU 时间的进程。不考虑正常的休眠过程(休眠状态),僵尸或停止的过程。
scarlett学习手册
2019/12/13
2.3K0
MongoDB性能分析之WiredTiger引擎
MongoDB的WiredTiger引擎可以设置其可使用的最大内存,由cacheSizeGB参数控制,单位为G,表示WiredTiger引擎能够缓存的最大热数据量。每一个连接数都会消耗内存使用,可通过命令行db.serverStatus().connections查看当前连接数,如果连接数较大可通过连接池的方式控制mongodb的连接数。
Power
2025/03/02
1790
MYSQL高性能优化总结
在进行MySQL的优化之前必须要了解的就是MySQL的查询过程,很多的查询优化工作实际上就是遵循一些原则让MySQL的优化器能够按照预想的合理方式运行而已。
MySQL轻松学
2018/10/24
1.2K0
MYSQL高性能优化总结
MySQL 最佳实践:分析和应对 MySQL 的 IO 问题
在日常工作中,有时候会发现 MySQL 的状态不太对劲,这时候就会看看监控指标,可能会发现:写入 QPS 开始出现毛刺,或者 IO 的指标很高。本文会从 Linux 层面入手,根据不同的 IO 特点来分析 MySQL 数据库可能遇到的问题,并给出一些可参考的优化/缓解思路。
王文安@DBA
2020/11/13
9.6K0
MySQL 最佳实践:分析和应对 MySQL 的 IO 问题
MySQL性能调优my.cnf详解
MySQL 5.6版本适合在1GB内存VPS上的my.cnf配置文件 [client] port = 3306 socket = /tmp/mysql.sock [mysqld] port = 3306 socket = /tmp/mysql.sock basedir = /usr/local/mysql datadir = /data/mysql pid-file = /data/mysql/mysql.pid user = mysql bind-add
老七Linux
2018/05/09
1.7K0
性能测试中关注的指标
关键业务的考核指标,重点关注业务价值评价的标准指标,电商类的下单量、支付量等,股票交易类关注买入、卖出以及账户中资金和持有股票的资金的关系等指标。这部分最好是和团队内BA一起确定,建立一套基于业务价值的监控指标。
Criss@陈磊
2024/06/27
3390
性能测试中关注的指标
性能优化之MySQL调优篇
MySQL对于很多Linux从业者而言,是一个非常棘手的问题,多数情况都是因为对数据库出现问题的情况和处理思路不清晰。在进行MySQL的优化之前必须要了解的就是MySQL的查询过程,很多的查询优化工作实际上就是遵循一些原则让MySQL的优化器能够按照预想的合理方式运行而已。
技术zhai
2019/02/15
7080
史上更全的 MySQL 高性能优化实战总结!
  在进行MySQL的优化之前必须要了解的就是MySQL的查询过程,很多的查询优化工作实际上就是遵循一些原则让MySQL的优化器能够按照预想的合理方式运行而已。
芋道源码
2019/10/29
7140
推荐阅读
相关推荐
Redis详解(6)性能监控:问题分析和优化
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档