前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >MySQL很慢... 怎么破??

MySQL很慢... 怎么破??

作者头像
田帅萌
发布于 2018-12-28 03:49:08
发布于 2018-12-28 03:49:08
5.4K0
举报
文章被收录于专栏:「3306 Pai」社区「3306 Pai」社区

老王:最近我的MySQL数据库很慢.... 很忧伤,这可肿么办?

帅萌:老王,老王你莫心慌,听我跟你唠~

MySQL性能有问题,先应该关注的是慢查询日志(slow log)。

MySQL性能慢,多半是SQL引起的(慢查询日志会把执行慢的SQL,一五一十的记录下来,就像你的身体一样诚实..)需要根据慢查询日志的内容来优化SQL。

其次,除了MySQL慢查询日志,还需要更多的关注liunx系统的指标和参数。

top 命令帮你观察大橘(局)。

观察 load average 1分钟 、5分钟、 15分钟的平均负载值。

  1. 然后是us% 用户使用的CPU占比,如果us%太高,极有可能索引使用不当。
  2. sy%系统内核使用的CPU占比,如果sy%太高,要注意MySQL的连接数和锁等信息。
  3. wa% io使用CPU的占比,如果wa%太高,要关注MySQL是否使用了硬盘临时表,或者大量刷盘等操作,也有可能是硬盘太慢,或硬盘故障,可以使用iostat等工具来观察。

还需要关注各个逻辑CPU之前的负载是否均衡(可能是中断不均衡导致性能问题),可以使用mpstat命令来进行详细观察。

MySQL是数据库服务,不建议跟其他应用混跑

其次是内存的使用信息,先通过free来观察。

要观察 是否使用了SWAP,剩余多少内存,是否发生内存泄漏。

说到SWAP,就要说到NUMA,通过numactl来观察NUMA的使用情况,建议关闭NUMA。至于为什么,建议阅读《NUMA架构的CPU -- 你真的用好了么?》 。

阅读地址:http://t.cn/RAZ3hw9

内存泄漏观察方法 buff/cache 和used 对比。 如果发生了内存泄漏,解决方案:

  1. 重启MySQL 。
  2. 升级到最新的小版本MySQL 。

还可以通过vmstat 来观察每秒的进程、内存、swap、io、cpu等详情情况。

然后要关注IO的使用情况,可以通过 iostat -x来观察,主要观察。

  1. rrqm/s #每秒读取的扇区数。
  2. wrqm/s #每秒写入的扇区数。
  3. avgrq-sz #平均请求扇区的大小 。
  4. avgqu-sz #是平均请求队列的长度。
  5. await #每一个IO请求的相应时间。
  6. %util #在统计时间内所有处理IO时间,除以总共统计时,暗示了设备的繁忙程度。

MySQL观察层面

  1. 主要关注tpsqps、并发连接数(Threads_connected)、并发活跃线程数(Threads_running)、临时表(tmp_disk_tables)、锁(locks_waited, Innodb_row_lock*)等指标。
  2. 关注当前是否有不良线程状态,例如:copyto tmp tableCreating sort indexSorting resultCreating tmp table、长时间的Sending data等。
  3. 关注InnoDB buffer pool page的使用情况,主要是Innodb pages_free、Innodb wait_free两个 。
  4. 关注InnoDB的redo log刷新延迟,尤其是checkpoint延迟情况,并关注unpurge list大小。
  5. 关注innodb status中是否有long semaphore wait的情况出现。
  6. 观察是否有大事物的阻塞。

在观察MySQL运行状态方面,帅萌丢一个py脚本。写的时间久,迭代N个版本,不过这个版本很方便....(其他的在项目里拆起来有点费劲)。但是编程这方面越写越精,需要磨练,各位可以参考一下,相信你们会写的更棒(阅读原文,即可获取)。

如果实在看不懂的请联知数堂zizi老师,我负责挖坑,他负责教你会带你飞

代码地址:http://t.cn/E4n7O6S

还提供一个SOS.sh脚本,当性能遇到问题,可以根据实际情况进行修改,并自行把相关内容打包,以便探讨和交流。

(杨奇龙老师的图)

##参考 知数堂-叶问(20181218)

##感谢,有赞杨奇龙老师提供的帮助,以及图片支持。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-12-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 3306pai 微信公众号,前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MySQL并不孤单的存在—硬件环境的限制与优化
之所以写这篇文章也是因为前几天出的一个问题,当时业务感觉到卡顿,并且伴随着锁超时的报错。最后通过分析发现是由于磁盘I/Q繁忙导致SQL耗时增加,部分锁竞争激烈的热数据出现了锁等待和锁超时。由此可见,系统的硬件环境对数据库整体性能的影响也是非常大的,MySQL在运行环境中并不是孤立存在的,它的整体性能往往受限于系统最薄弱的环节,今天想和大家分享下,都有哪些系统指标会对数据库的整体性能产生影响,我们又如何进行分析。
MySQL数据库技术栈
2020/08/04
1.3K0
【原创】一文掌握 Linux 性能分析之 I/O 篇
这是 Linux 性能分析系列的第三篇,前两篇分别讲了 CPU 和 内存,本篇来看 IO。
Linux云计算网络
2019/05/25
2.4K0
linux服务器性能问题相关排查手册(总结向)
定义:平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数,和 CPU 使用率并没有直接关系。换言之,要计算 CPU 负载的值,只考虑正在运行或等待分配 CPU 时间的进程。不考虑正常的休眠过程(休眠状态),僵尸或停止的过程。
scarlett学习手册
2019/12/13
2.2K0
性能测试必备监控技能linux篇14
前言 如果性能测试的目标服务器是linux系统,在如何使用linux自带的命令来实现性能测试过程的监控分析呢? 对于日常性能测试来讲,在linux下或是类Unix系统,我们必须掌握以下常用的指标查看命令。 ps pstree top free vmstat iostat iotop sar 当然还有其他命令,这里就上述笔者常用的命令推荐大家掌握。 ps ps命令能给出当前系统中进程的快照。下面我们列举几个常用的选项,对于其他的请参考官方文档或是自行搜索相关文档。 使用 -a 参数。-a 代表 all。同时加
苦叶子
2018/04/04
1.4K0
性能测试必备监控技能linux篇14
MySQL 巡检怎么做
首先看 CPU 内存、硬盘 io 的消耗程度,其中重点是硬盘使用率,要做好准备,避免厂家期间业务写入增长,磁盘占满。
wubx
2019/02/27
2.2K0
vmstat命令详解与举例
[root@localhost ~]# vmstat -n 3       (每个3秒刷新一次) procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu---- r b   swpd   free   buff cache   si   so    bi    bo   in    cs us sy id wa 1 0    144 186164 105252 2386848    0    0    18   166   83     2 48 21 31 0 2 0    144 189620 105252 2386848    0    0     0   177 1039 1210 34 10 56 0 0 0    144 214324 105252 2386848    0    0     0    10 1071   670 32 5 63 0 0 0    144 202212 105252 2386848    0    0     0   189 1035   558 20 3 77 0 2 0    144 158772 105252 2386848    0    0     0   203 1065 2832 70 14 15 0
王亚昌
2018/08/03
9360
Linux高负载排查最佳实践
在Linux系统中,经常会因为负载过高导致各种性能问题。那么如何进行排查,其实是有迹可循,而且模式固定。
十里桃花舞丶
2024/03/15
4820
Linux高负载排查最佳实践
MySQL最佳实践:内存管理分析
在日常工作中,时不时会收到内存使用率高的告警,那么我们应该如何处理呢?本文将从Linux和MySQL两个层面,介绍内存管理的相关知识点,希望能给大家带来一些帮助,以便更好地应对内存问题。
brightdeng@DBA
2020/11/02
11.8K0
MySQL最佳实践:内存管理分析
网工人必须掌握的Linux命令
作为一个Linux运维人员,主要就是对Linux服务器的性能做一些优化,本篇博文仅仅介绍如何性能检测常用的指令!
网络技术联盟站
2021/02/22
9990
MySQL节前巡检要点
首先看 CPU内存、硬盘io的消耗程度,其中重点是硬盘使用率,要为长假做好准备,避免单位在过年期间业务写入增长,磁盘占满。
田帅萌
2019/03/01
9810
MySQL节前巡检要点
MySQL导致的CPU高负载问题
在某个新服务器上,新建了一个MySQL的实例,该服务器上面只有MySQL这一个进程,但是CPU的负载却居高不下,使用top命令查询的结果如下:
AsiaYe
2019/11/06
2.4K0
性能工具之linux监控之top、vmstat、iostat复习
Ø d 指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。
高楼Zee
2020/02/10
1.6K0
排查线上问题必备的 6 个 Linux 命令!
top - 18:14:58 up 112 days, 1:35, 1 user, load average: 0.00, 0.10, 0.11
Java技术栈
2021/07/16
2K0
排查线上问题必备的 6 个 Linux 命令!
Linux性能优化
性能问题的本质就是系统资源已经到达瓶颈,但请求的处理还不够快,无法支撑更多的请求。 性能分析实际上就是找出应用或系统的瓶颈,设法去避免或缓解它们。
mikelLam
2022/10/31
2.8K0
Linux性能优化
MySQL巡检
当然,查看当前的磁盘和内存使用情况df -h,free -m,是否使用numa和swap,或是否频繁交互信息等。当然,还有其他的监控项目,这里就不一一赘述了。 除此之外,还需要关注日志类信息,例如:
HaydenGuo
2019/12/12
1.6K0
MySQL巡检
25-性能分析命令
memory:「swpd」 显示多少块被换出磁盘,「free」显示剩下的空闲块,「buff」正在被作用缓冲区的块,「cache」正在被用作操作系统的缓存
zx钟
2021/07/06
7370
linux服务器负载问题排查思路以及常用指令总结
最近在维护公司线上的服务器,排查了一些问题,所以做一个总结。有一段时间,线上环境变得很卡,客户端请求很多都报超时,因为线上没有良好的apm监控,所以只能通过流量高峰期和日志去排查问题。通过排查,发现数据库的慢查询日志在比之间的暴涨了十倍,然后发现,memcache服务器(8核)负载很高,cpu一直在50%的左右,原因就是memcache服务器内存用完,导致内存的淘汰十分频繁,这样就导致很多请求落到数据库。下面说下主要的排查思路和用到的工具
lyb-geek
2018/12/27
3.2K0
后台性能测试不可不知的二三事
某月黑风高之夜,某打车平台上线了一大波(G+)优惠活动,众人纷纷下单。于是乎,该打车平台使用的智能提示服务扛不住直接趴窝了(如下图)。事后,负责智能提示服务开发和运维的有关部门开会后决定:必须对智能提示服务进行一次全面深入的性能摸底,立刻!现在!马上! 那么一大坨问题就迎面而来:对于智能提示这样的后台服务,性能测试过程中应该关心那些指标?这些指标代表什么含义?这些指标的通过标准是什么?下面将为您一一解答。 概述 不同人群关注的性能指标各有侧重。后台服务接口的调用者一般只关心吞吐量、响应时间等外部指标。
腾讯移动品质中心TMQ
2018/02/06
2.9K0
后台性能测试不可不知的二三事
mysql迁移数据目录
随着公司站点的发展,用户和访问量日益增加,经常会出现数据库主从出现延迟的情况,例如,用户在点击充值页进行充值时,经常会出现充值不到账的情况,针对这个问题,对数据库进行排查,发现,磁盘IO极不稳定,iowait也很高,%util一直在90左右,这说明产生的I/O请求很多,IO已经满负荷,磁盘IO存在瓶颈。所以需要加一块SSD盘,来提高IO处理速度。
dogfei
2020/07/31
1.4K0
Linux系统之常用命令
环境:CentOS7X64(CentOS Linux release 7.5.1804)
尜尜人物
2020/01/15
1.5K0
Linux系统之常用命令
相关推荐
MySQL并不孤单的存在—硬件环境的限制与优化
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档