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抓取出来,严禁在生产环境使用。
经验分享 程序员 微信小程序 职场和发展