MySQL高级——性能分析之ShowProfile
SQL语句优化:
上篇我们介绍了SQL优化的常用流程即:1.发现问题,导致数据库变慢的原因有很多,首先确定是不是SQL语句引起的。2.定位语句,如果确定是SQL语句的问题就需要通过慢查询日志找到查询慢的语句。3.Explain分析,此时可以看出SQL执行信息比如查询表、索引使用情况等。4.ShowProfile分析,
这一步可以分析SQL语句执行中资源消耗情况。5.数据库参数调优,这一步一般由运维处理。
ShowProfile简介
ShowProfile是MySQL提供用来分析当前会话中SQL语句执行的资源消耗情况的,主要用于SQL调优。默认它是关闭状态,但会保存最近 15 次的运行结果。
ShowProfile使用
开启ShowProfile,开启后它会在后台记录每条SQL的执行过程,命令如下:
set profiling=on
查询ShowProfile记录结果:
show profiles
分析具体某条SQL运行结果:
show profile 参数 for query 问题SQL的号码
有如下参数:
-
ALL:显示所有的开销信息
-
BLOCK IO:显示块IO相关开销
-
CONTEXT SWITCHES:上下文切换相关开销
-
CPU:显示CPU相关开销信息
-
IPC:显示发送和接收相关开销信息
-
MEMORY:显示内存相关开销信息
-
PAGE FAULTS:显示页面错误相关开销信息
-
SOURCE:显示和Source function,Source file,Source line相关的开销信息
-
SWAPS:显示交换次数相关开销的信息
查询结果分析,以下是示例图:
Status列表示SQL执行的步骤,Duration列是该步骤执行时间,其他列是此步骤执行中占用资源情况。
Status列中只要出现以下几种情况就必须得优化:
-
converting HEAP to MyISAM:查询结果太大,内存都不够用了往磁盘上搬了
-
Creating tmp table:创建临时表
-
Copying to tmp table on disk:把内存中临时表复制到磁盘
-
locked
全局查询日志
主要用于测试环境将所有SQL抓取出来,严禁在生产环境使用。
SQL语句优化: 上篇我们介绍了SQL优化的常用流程即:1.发现问题,导致数据库变慢的原因有很多,首先确定是不是SQL语句引起的。2.定位语句,如果确定是SQL语句的问题就需要通过慢查询日志找到查询慢的语句。3.Explain分析,此时可以看出SQL执行信息比如查询表、索引使用情况等。4.ShowProfile分析, 这一步可以分析SQL语句执行中资源消耗情况。5.数据库参数调优,这一步一般由运维处理。 ShowProfile简介 ShowProfile是MySQL提供用来分析当前会话中SQL语句执行的资源消耗情况的,主要用于SQL调优。默认它是关闭状态,但会保存最近 15 次的运行结果。 ShowProfile使用 开启ShowProfile,开启后它会在后台记录每条SQL的执行过程,命令如下: set profiling=on 查询ShowProfile记录结果: show profiles 分析具体某条SQL运行结果: show profile 参数 for query 问题SQL的号码 有如下参数: ALL:显示所有的开销信息 BLOCK IO:显示块IO相关开销 CONTEXT SWITCHES:上下文切换相关开销 CPU:显示CPU相关开销信息 IPC:显示发送和接收相关开销信息 MEMORY:显示内存相关开销信息 PAGE FAULTS:显示页面错误相关开销信息 SOURCE:显示和Source function,Source file,Source line相关的开销信息 SWAPS:显示交换次数相关开销的信息 查询结果分析,以下是示例图: Status列表示SQL执行的步骤,Duration列是该步骤执行时间,其他列是此步骤执行中占用资源情况。 Status列中只要出现以下几种情况就必须得优化: converting HEAP to MyISAM:查询结果太大,内存都不够用了往磁盘上搬了 Creating tmp table:创建临时表 Copying to tmp table on disk:把内存中临时表复制到磁盘 locked 全局查询日志 主要用于测试环境将所有SQL抓取出来,严禁在生产环境使用。下一篇:
DNF自动启停服务端备份数据