mysql语句性能分析工具之profiling用法

 更新时间:2023年12月13日 15:36:54   作者:zyjzyjjyzjyz  
这篇文章主要介绍了mysql语句性能分析工具之profiling用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

以往我们已经介绍了一个mysql的分析工具:mysql慢查询日志分析工具(pt-query-digest),可以看我的文章:mysql慢查询日志分析工具(pt-query-digest)

一、profiling的介绍

sql查询慢的情况很常见,对于慢sql的优化有三个步骤,又称优化三板斧。

  • 板斧一:查看执行计划explain
  • 板斧二:建立合适索引
  • 板斧三:使用合适的连接关系和过滤条件来实现sql语句的优化

如果执行计划正确sql语句的性能还很慢,可以通过mysql的profiling工具进行定位分析。

为了更精准的定位一条sql语句的性能问题,需要清楚的直到这条sql语句运行时消耗多少系统资源。

mysql中profiling工具可以满足此需求,通过该工具可以获取一条sql语句在执行过程中多种资源的消耗情况——比如cpu,io,ipc,swap等资源消耗情况。

二、profiling使用方法

2.1、启用命令

set profiling = 1;

2.2、启动命令后,运行想要查询性能的sql语句

select * from xiatui where name like '0%' and age = '9803' and sex =0;

2.3、查询上述sql语句信息

show profiles;

 说明:

  • Query_ID:sql语句的id编号,这个编号会在步骤4、5用到
  • Duration:sql语句执行时长
  • Query:具体的sql语句

2.4、查询资源消耗情况

SHOW PROFILE CPU, BLOCK IO FOR QUERY 360;

上述360就是第三步骤的Query_ID值,想要查询哪条sql语句,就输入哪条sql语句对应的id值。

2.5、查询某条sql语句的具体执行时间

SHOW PROFILE FOR QUERY 391;

优化建议:

如果想要优化某条sql语句,可以关注一下该条sql语句的show profile结果中每个阶段的耗时,分析耗时最长的阶段。

如果status列出现下面的信息就可以考虑对sql语句进行优化:

  • converting heap to  MyISAM:查询结果太大,内存不够用
  • creating tmp table:创建了临时表。先拷贝数据到临时表,用完后再删除临时表。
  • copying to tmp table on disk:把内存中临时表复制到磁盘上
  • locked:发生了死锁行为。                

2.6、关闭

set profiling = 0;

三、整体使用过程

set profiling = 1;
select /*+ no_icp(xiatui) */ * from xiatui where name like '0%' and age = '9803' and sex =0;
select * from xiatui where name like '0%' and age = '9803' and sex =0;
show profiles;
set profiling = 0;

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • MySQL性能优化之Open_Table配置参数的合理配置建议

    MySQL性能优化之Open_Table配置参数的合理配置建议

    这篇文章主要介绍了MySQL性能优化之Open_Table配置参数的合理配置建议,在MySQL数据库中,Opened_tables表示打开过的表数量,需要的朋友可以参考下
    2014-07-07
  • MySQL union 语法代码示例分析

    MySQL union 语法代码示例分析

    主要介绍的是MySQLunion 语法代码演示,我前两天在相关网站看见MySQLunion 语法代码演示的资料,觉得挺好,就拿出来供大家分享。希望在你今后的学习中会对你有所帮助。
    2010-06-06
  • MySQL btree索引与hash索引区别

    MySQL btree索引与hash索引区别

    这篇文章主要介绍了MySQL btree索引与hash索引区别,帮助大家更好的理解和学习MySQL索引的相关知识,感兴趣的朋友可以了解下
    2020-09-09
  • MySQL 重命名表的操作方法及注意事项

    MySQL 重命名表的操作方法及注意事项

    有时候我们会遇到重命名表的需求,比如说因业务变化,需要将表 a 重命名为表 b 。这个时候可以执行 RENAME TABLE 语句或 ALTER TABLE 语句来重命名表。本篇文章我们一起来学习下重命名表相关知识。
    2021-05-05
  • Windows 本地安装 Mysql8.0图文教程

    Windows 本地安装 Mysql8.0图文教程

    本文介绍了如何在Windows本地安装Mysql8.0。从下载Mysql8.0安装包,运行安装程序,配置初始设置到启动Mysql服务等详细步骤进行了讲解。
    2023-04-04
  • SQL多个字段拼接组合成新字段的常用方法

    SQL多个字段拼接组合成新字段的常用方法

    在sql语句中,有时候我们可能需要将两个字段的值放在一起显示,因为他们通常是一起出现的,比如客户名称和客户编号,那我们就要将这两个字段拼接成一个字段,本文给大家介绍了几种常见的方法,需要的朋友可以参考下
    2024-02-02
  • Mysql 5.7从节点配置多线程主从复制的方法详解

    Mysql 5.7从节点配置多线程主从复制的方法详解

    这篇文章主要介绍了Mysql 5.7从节点配置多线程主从复制的相关资料,文中介绍的非常详细,对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。
    2017-03-03
  • MySQL5.7.16绿色版安装教程详解

    MySQL5.7.16绿色版安装教程详解

    这篇文章主要介绍了MySQL5.7.16绿色版安装教程详解的相关资料,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2016-10-10
  • MySQL中的多表查询与事务操作

    MySQL中的多表查询与事务操作

    这篇文章主要介绍了MySQL中的多表查询与事务操作,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • Mysql权限管理grant命令使笔记

    Mysql权限管理grant命令使笔记

    这篇文章主要介绍了Mysql权限管理grant命令使笔记,详细记录了常用权限管理命令,需要的朋友可以参考下
    2014-05-05

最新评论