首页 > 数据库 >mysql中性能分析Profiling

mysql中性能分析Profiling

时间:2022-11-21 13:36:16浏览次数:42  
标签:tmp 开销 Profiling 性能 mysql SQL table 执行

概念

 

​Show Profile​​是mysql提供可以用来分析当前会话中语句执行的资源消耗情况,可以用于Sql调优的测量。

 

示例

 

1、先查看是否开启了此功能,默认情况下,参数处于关闭状态,为​​OFF​​状态

 

show variables like 'profiling%';

 

2、开启​​Profiling​​:


    set profiling=1;


3、展示最近的SQL执行情况:


    show profiles;


此命令展示最近执行的sql语句,默认是15次,一个示例如下:

mysql中性能分析Profiling_sql

展示最近的15条

​Query_ID​​会一直递增,后期我们会使用这个id,来具体查询某一条SQL的执行耗时清单

4、具体查看某一条SQL的执行细节:


show profile cpu,block io for query 8;


如下图为查询id=8的这条sql的执行细节,此处查询了​​cpu​​​和​​block io​​这两种类型,其他可以选择的类型在图的下面展示:

mysql中性能分析Profiling_生命周期_02

SQL执行具体细节

可以使用的类型如下:

ALL;显示所有的开销信息
BLOCK IO:显示块IO相关开销
CONTEXT SWITCHES:上下文切换相关开销
CPU:显示CPU相关开销
IPC:显示发送和接受相关开销
MEMORY:显示内存相关开销
PAGE FAULTS:显示页面错误相关开销
SOURCE:显示和Source_function, Source_file,Source_line相关的相关开销
SWAPS:显示交换次数相关开销

重点

看前面的图​​SQL执行具体细节​​​,左边​​Status​​列展示了一条SQL执行的从开始到清理的整个生命周期中执行的操作。如果在其生命周期阶段出现如下的情况的就要重视了:

  1. converting HEAP to MyISAM :查询结果太大,内存都不够用了往磁盘上面搬了
  2. Creating tmp table :创建了临时表,先拷贝到临时表,用完后再删除
  3. Copying to tmp table on disk:把内存中的临时表复制到磁盘中,这个很耗性能
  4. locked :这个就是指在等待锁的意思
    可以看看如下​​Creating tmp table​​的样例

Creating tmp table的样例

总结

开启​​Profiling​​后,mysql会留下15条最近执行的sql的现场, 便于我们发现问题。

​Show profiles​​用来查最近的15条。

​Show profile​​用来展示每一个SQL执行阶段的耗时清单,便于我们发现耗时最多的地方,然后以此为依据查找问题所在,最后优化SQL或者优化mysql参数。比如耗时清单创建了临时表,就要考虑表是否创建索引,如果创建了那么是否没有用到或者失效了。

总的来说​​Profiling​​是一个很不错的mysql性能分析工具。

 

标签:tmp,开销,Profiling,性能,mysql,SQL,table,执行
From: https://blog.51cto.com/u_6353447/5873665

相关文章

  • mysql中数据页的相关概念
    ​概念在InnoDB存储引擎中,所有的数据都被逻辑地存放在表空间中,表空间(tablespace)是存储引擎中最高的存储逻辑单位,在表空间的下面又包括段(segment)、区(extent)、页(page),他们之......
  • mysql中eq_range_index_dive_limit参数学习
    ​概念官方文档如下描述:Thisvariableindicatesthenumberofequalityrangesinanequalitycomparisonconditionwhentheoptimizershouldswitchfromusingind......
  • mysql中AnalyzeTable优化
    AnalyzeTableMySQL的Optimizer(优化元件)在优化SQL语句时,首先需要收集一些相关信息,其中就包括表的cardinality(可以翻译为“散列程度”),它表示某个索引对应的列包含多少个不同......
  • mysql中explain分析sql详解
     Explain举例mysql> explain select * from event; +—-+————-+——-+——+—————+——+———+——+——+——-+ | id | select_type | table | ......
  • mysql中优化器是如何选择索引的
    ​一:概念-在索引建立之后,一条语句可能会命中多个索引,这时,索引的选择,就会交由 优化器来选择合适的索引。- 优化器选择索引的目的,是找到一个最优的执行方案,并用......
  • 盘点MySQL的八大日志,你知道哪些?
    前言日志对于任何系统应用来说都承载着至关重要的作用,借助日志,我们可以发现系统运行错误的原因,从而解决问题。MySQL也不例外,也会记录各种各样的日志信息。那么你知道MySQL都......
  • mysql中performance_schema(一)配置篇
    背景   performance_schema最早在MYSQL5.5中出现,而现在5.6,5.7中performance_schema又添加了更多的监控项,统计信息也更丰富,真乃DBA童鞋进行性能诊断分析的福音。 检查......
  • mysql常见面试题第一讲
    ​一、为什么用自增列作为主键1、如果我们定义了主键(PRIMARYKEY),那么InnoDB会选择主键作为聚集索引。如果没有显式定义主键,则InnoDB会选择第一个不包含有NULL值的唯一索引......
  • mysql中performance_schema(三) 实践篇
     背景前一篇文章我们分析了performance_schema中每个表的用途,以及主要字段的含义,比较侧重于理论的介绍。这篇文章我主要从DBA的角度出发,详细介绍如何通过performance_schem......
  • mysql中CPU或内存利用率过高问题
    CPU利用率过高原因在MySQL使用过程中,出现CPU利用率过高甚至超过100%时,与数据库存在低效SQL或大量行锁冲突有非常大的关系,一般都是由于大量低效的SQL导致,出现行锁冲......