MySQL数据库:使用show profile命令分析性能

MySQL数据库:使用show profile命令分析性能

1、show profile的作用:

能够查出最近执行的SQL语句的运行状态,包括在运行过程中执行了哪些操作,各占用了多少时间,利用proflie 功能,可以分析一个SQL具体的执行代价是怎么样的,尤其是可以分析它的最大瓶颈在哪里。目前profile 功能可提供除了内存以外的其他资源消耗统计,例如CPU、I/O、CONTEXT、SWAP等。大部分情况下,profile 的结果我们主要关注两列:Status、Duration,前者表示的是profile 里的状态,后者是该状态的耗时。因此,我们最主要的是关注处于哪个状态耗时最久,这些状态中,哪些是可以进一步优化的。

 

2、show profile 语法:

SHOW PROFILE [type [, type] … ]

[FOR QUERY n]

[LIMIT row_count [OFFSET offset]]

 

type参数:

| ALL:显示所有开销信息

| BLOCK IO:阻塞的输入输出次数

| CONTEXT SWITCHES:上下文切换相关开销信息

| CPU:显示CPU的相关开销信息 

| IPC:接收和发送消息的相关开销信息

| MEMORY :显示内存相关的开销,目前无用

| PAGE FAULTS :显示页面错误相关开销信息

| SOURCE :列出相应操作对应的函数名及其在源码中的调用位置(行数) 

| SWAPS:显示swap交换次数的相关开销信息

 

LIMIT row_count子句用于限制输出行数。

 

3、show profile / show profiles的使用:

show profile 以及 show profiles语句可以显示当前会话过程中执行的sql语句的性能(profiling)信息。

(1)profiling功能由MySQL会话变量 : profiling控制,默认是OFF关闭状态,查看当前session是否开启profile功能:

select @@profiling;

show variables like ‘profiling’; 

(2)开启profiling:

set profiling=ON;

(3)运行SQL:

随便运行几条SQL,以便show profiles 的日志分析。

(4)查看结果:

(4.1)show profiles

show profiles 显示最近发给服务器的多条语句,条数根据会话变量profiling_history_size定义,默认是15,最大值为100。设为0等价于关闭profiling 分析功能。除SHOW PROFILE和SHOW PROFILES之外,所有sql语句的性能信息都会被记录,甚至包括有错误的语句。

show profiles;

MySQL数据库:使用show profile命令分析性能

(4.2)show profile

用于单独分析最近一条执行的sql语句的详细资源占用信息和工作状况,默认显示状态以及它们持续的时间。

show profile;

MySQL数据库:使用show profile命令分析性能

可以给show profile 指定一个 for query id 来查看指定 id 的语句,还可以给输出添加新的列。如,查看用户和CPU使用。可以用如下命令。(详细参数请看本文第2点的type参数)

show profile cpu,block io for query id;

id 为 show profiles 查出来的某条记录的Query_ID。

MySQL数据库:使用show profile命令分析性能

 

4、作用范围:

(1)这个命令只是在本会话内起作用,即无法分析本会话外的语句。开启分析功能后,所有本会话中的语句都被分析(甚至包括执行错误的语句),除了SHOW PROFILE和SHOW PROFILES两句本身。

(2)profiling是会话级的,当会话结束,与之相关的profiling信息也会随之消失。

(3)profiling是针对进程(process)而非线程(threads),因此运行在服务器上的其他服务进程可能会影响分析结果.

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/100070.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • db2 timestampdiff

    db2 timestampdiff要将字符串转换成日期或时间值,可以使用:TIMESTAMP(‘2002-10-20-12.00.00.000000’)TIMESTAMP(‘2002-10-2012:00:00’)DATE(‘2002-10-20′)DATE(’10/20/2002′)TIME(’12:00:00’)TIME(‘12.00.00’)TIMESTAMP()、DATE(…

  • c++和java哪个好学_选 Python 还是 Java ?[通俗易懂]

    c++和java哪个好学_选 Python 还是 Java ?[通俗易懂]对于在校学生,以及要转行学编程的,把一门语言熟悉起来,非常的重要。对于初学编程,以及想要转行到编程领域的人来说,总有这么一个选择,选C++、Python、还是Java好呢?哪个前景更好、哪个好学、哪个好找工作,等等这类问题。熟悉我的都知道,我是从LinuxC/C++后台开发,转行到算法工程师,在大四实习的时候,做过Go开发,大四下做毕设的时候,用过Java、以及前端一些技术;相对…

  • 数据结构——查分数组

    数据结构——查分数组介绍查分数组是一个数据结构。相当于前缀和的逆运算。查分数组的功能是修改区间,查询点。修改区间的时间复杂度是O(1).查询点的时间复杂度是O(n)。若配合树状数组时间复杂度可达到O(logn)。修改区间操作x位置加上修改量,y+1位置减去修改量。这样就相当于整个区间的元素都修改了。staticvoidupdate(intx,inty,intz){ b[x]+=z; b[y+1]-=z;}查询刚刚修改方便了,但是查询的时候就需要全部都加一遍了。staticint

  • Simhash_immutable

    Simhash_immutablesimhash与重复信息识别来源:http://grunt1223.iteye.com/blog/964564在工作学习中,我往往感叹数学奇迹般的解决一些貌似不可能完成的任务,并且十分希望将这种喜悦分享给大家,就好比说:“老婆,出来看上帝”…… 随着信息爆炸时代的来临,互联网上充斥着着大量的近重复信息,有效地识别它们是一个很有意义的课题。例如,对于搜索引擎的

    2022年10月31日
  • 基础乐理

    基础乐理

  • vhdl与verilog hdl的区别_HDL语言

    vhdl与verilog hdl的区别_HDL语言HDL特别是VerilogHDL得到在第一线工作的设计工程师的特别青睐,不仅因为HDL与C语言很相似,学习和掌握它并不困难,更重要的是它在复杂的SOC的设计上所显示的非凡性能和可扩展能力。 在学习HDL语言时,笔者认为先学习VerilogHDL比较好:一是容易入门;二是接受VerilogHDL代码做后端芯片的集成电路厂家比较多,现成的硬核、固核和软核比较多。小析VHDL与Veril

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号