首页 > 数据库 >MySql语句性能问题定位--从sql语句到磁盘IO检查

MySql语句性能问题定位--从sql语句到磁盘IO检查

时间:2022-11-25 14:13:55浏览次数:34  
标签:语句 -- sql IO MySql 磁盘

MySql语句性能问题定位--从sql语句到磁盘IO检查

一、背景

    本文只针对IO导致MySql性能问题的定位,其他如CPU、MySql参数配置、程序自身等问题需要进一步补充。原因某条sql建表语句运行了15秒 

二、步聚

Step1:

开启profiling

SET profiling =1;

关闭

SET profiling =off;

找到运行慢的sql语句ID

show profiles;

查看sql语句CPU/IO等耗时具体的量化数据

show profile CPU,SWAPS,BLOCK IO,MEMORY,CONTEXT SWITCHES,IPC,PAGE FAULTS,SOURCE for query 39;

 

结论:

从上图可见CPU耗时不多,反而IO操作占了大部分的耗时。下面让我们来找出服务器的哪些进程在占用IO资源。

Step2:

查看服务器linux IO:

iostat -x 1

 

 

找出哪些进程在疯狂的进行IO操作:

  •  

iotop

  •  

 

结论:

发现磁盘的读写都很高,而且svctm与await相差很大。

1,await的值远高于svctm的值,则表示I/O队列等待太长,系统上运行的应用程序将变慢。

2,%util项的值也是衡量磁盘I/O的一个重要指标,%util接近100%,表示磁盘产生的I/O请求太多,I/O系统已经满负荷的在工作,该磁盘可能存在瓶颈。

所以,确实是磁盘高IO操作,导致sql性能问题。而且是mysql本身IO特别高。

Setp3:

使用pt-ioprofile,查出哪些文件的IO操作高。命令如下,

下载连接:https://www.percona.com/doc/percona-toolkit/2.2/installation.html  

yum install  percona-toolkit-2.2.17-1.noarch.rpm
pt-ioprofile --profile-pid=44937 --cell=sizes

 

 

总结:

从上图可以看出,数据库中,某些表的读写操作是造成IO一直很高的主要原因,并严重影响了sql的查询性能。

定位到具体某个表、文件之后,就可以采取相应措施了。可以更换磁盘设备,使用更快的SSD磁盘,结合程序读写规则,选择合适的磁盘文件系统类型,或者从程序本身进行优化。

 

标签:语句,--,sql,IO,MySql,磁盘
From: https://www.cnblogs.com/Lqdream/p/16924921.html

相关文章

  • CF804E The same permutation
    首先当\(n\equiv\left\{\begin{matrix}2,3\end{matrix}\right\}\pmod4\)时,无解,因为每次操作一定会改变逆序对奇偶性。那就只剩两种情况先考虑\(n\equiv0\pmod......
  • java实现统计在线
    主要是实现HttpSessionBindingListener的valueBound方法和valueUnbound方法进行session的创建和销毁。定义一个Vector容器。用于放置ip等信息。具体实现如下:importcom.......
  • Sidecar配置示例
    出向侦听器未配置前[root@master~]#istioctlpclistenerssleep-78ff5975c6-75q5zADDRESSPORTMATCH......
  • SQL Server 解析Json(单层/多层)
    一,单层Json数据取出1.取出取出@JsonData字符串中的 __type,DocNo,OrderPriceTC,Organization_Code字段  DECLARE@JsonDataNVARCHAR(max)=''SET@JsonData='[{......
  • MySQL高可用主从切换工具replication-manager
    MySQL高可用主从切换工具replication-manager MySQL高可用工具,一直以来MHA使用的比较多,自从MySQL开启GTID之后,又出现了Orchestrator以及replication-manager这类新的高......
  • MySQL调优之innodb_buffer_pool_size大小设置
    MySQL调优之innodb_buffer_pool_size大小设置sunny052962017-12-2721:42:0443421收藏9展开 MySQL调优之innodb_buffer_pool_size大小设置 相关查看命令sql>......
  • Reflect
    Reflect 是一个内置的对象,它提供拦截JavaScript操作的方法。这些方法与proxyhandlers (en-US)的方法相同。Reflect不是一个函数对象,因此它是不可构造的。描述与大......
  • Zabbix与乐维监控对比分析(一)——架构、性能篇
     近年来,Zabbix凭借其近乎无所不能的监控及优越的性能一路高歌猛进,在开源监控领域独占鳌头;而作为后起的新锐IT监控平台——乐维监控,则不断吸收Zabbix,Prometheus等优秀......
  • Qt中的渲染
    Qt中3种不同的渲染方式 1)Qt::AA_UseDesktopOpenGL 使用显卡的openGL库,且要求支持openGL2.1及以上的版本。因此很多老旧设备是不满足版本要求的(windows默认的驱动版本只......
  • mysql参数优化
    MySQL性能优化之参数配置 1、目的:通过根据服务器目前状况,修改Mysql的系统参数,达到合理利用服务器现有资源,最大合理的提高MySQL性能。 2、服务器参数:32G内存、4个CP......