`
zhangjijun
  • 浏览: 35853 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

mysql:show profile分析一个SQL执行慢的具体原因

 
阅读更多

在做数据库优化的过程中可以通过explain来查看查询有没有走索引,但是

mysql从5.0.37版本开始增加了对show profiles和show profile 语句的支持,通过

have_profiling参数,能够看到当前mysql是否支持profile;

mysql> select @@have_profiling;

+-------------------------------+

|@@have_profiling |

+-------------------------------+

| YES |

+-------------------------------+

1 row in set (0.00 sec)

默认profiling是关闭的,可以通过set语句在session级别开启profiling:

mysql> select @@profiling;

+-------------------------------+

| @@profiling |

+-------------------------------+

| 0 |

+------------------------------+

1 row in set (0.00 sec)

mysql> set profiling=1;

query ok ,0 rows affected(0.00 sec)

通过 profile,我们能够更清楚地了解sql执行的过程,例如,我们知道myisam表有表元数据的缓

存(例如行数,即count(*)值),那么对一个myisam表的count(*)是不需要消耗太多资源的,而对于

innodb来说,就没有这种元数据缓存,count(*) 执行地较慢,下面做个实验验证一下。

首先,在一个innodb引擎的付款表payment上,执行一个count(*)查询:

mysql> select count(*) from payment;

+------------------------------+

| count(*) |

+------------------------------+

| 16049 |

+------------------------------+

1 row in set (0.00 sec)

执行完毕后,通过show profiles语句,看到当前sql的queryID为4:

mysql>show profiles;

mysql:show profile分析一个SQL执行慢的具体原因

 

通过 show profile for query语句能够看到执行过程中线程的每个状态和消耗的时间:

mysql:show profile分析一个SQL执行慢的具体原因

 

show profile cpu for query 4;

——————————————————————————————————————

innodb_buffer_pool_size的参数设置详见:

https://blog.csdn.net/sunny05296/article/details/78916775

-- innodb_buffer_pool_size=128M  

分享到:
评论

相关推荐

    Mysql利用profiles来查看SQL语句执行计划.rar

    要使用该功能,mysql的版本必须在5.0.37版本以上。否则只能使用explain 的方式来检查。 profiling 功能可以了解到cpu io 等更详细的信息。 show profile 的格式如下: SHOW PROFILE [type [, type] ... ] [FOR ...

    Mysql利用profiles来查看SQL语句执行计划.doc

    MySQL 的 `Profiles` 功能是一个非常强大的工具,它允许数据库管理员和开发者深入了解 SQL 语句的执行过程,从而优化数据库性能。这一特性自 MySQL 5.0.37 版本引入,为用户提供了比 `EXPLAIN` 更深入的洞察,包括 ...

    mysql优化(1)show命令 慢查询日志 explain profiling

    慢查询日志是MySQL的一个重要功能,用于记录执行时间超过特定阈值的查询。通过分析慢查询日志,我们可以找出耗时较长的SQL语句,进而进行优化。开启慢查询日志需要设置`slow_query_log`变量,并配置适当的阈值,如`...

    【MySQL】SQL性能分析 (七).pdf

    以上内容涵盖了MySQL数据库性能优化的关键领域,包括SQL执行频率分析、慢查询日志分析、Profile详情分析以及EXPLAIN执行计划分析。通过这些工具和技术的应用,不仅可以提高数据库性能,还能确保应用程序的高效稳定...

    Mysql-使用show profiles分析你的SQL

    `SHOW PROFILE` 显示的每条SQL语句都有一个查询ID,通过这个ID,你可以进一步分析CPU、内存、IO等资源的使用情况。例如,`show profile cpu,block io for query ;` 将显示与指定查询ID相关的CPU和IO消耗。`Status` ...

    MySql数据库使用Sql调优

    2. **使用Performance Schema**:这是一个更为详细的监控工具,可以跟踪资源消耗、等待事件等。例如,通过查询`events_statements_summary_by_digest`来找出执行最多的SQL语句,或者查看平均响应时间最长的SQL。 在...

    linux安装mysql(实测没问题)

    - 使用 `mysqld --initialize` 初始化 MySQL 数据库,初始化完成后会生成一个临时密码,建议记录下来以便后续使用。 - 给 MySQL 加密以增强安全性。 2. **启动 MySQL 服务**: - 使用命令 `service mysql start`...

    MySQL性能分析show profiles详解(csdn)————程序.pdf

    `SHOW PROFILES`是MySQL提供的一种工具,用于分析SQL语句在执行过程中的资源消耗情况,帮助我们定位性能瓶颈。本篇将深入讲解`SHOW PROFILES`的使用方法和解析结果。 首先,`SHOW PROFILES`默认是关闭的,我们需要...

    MySQL利用profile分析慢sql详解(group left join效率高于子查询)

    首先,`PROFILE`是MySQL提供的一种性能分析工具,用于追踪SQL语句的执行过程,它详细列出了每一步操作的时间消耗,包括解析、预处理、执行等阶段,帮助我们找到性能瓶颈。例如,在开启`profiling`后,我们可以通过`...

    MYSQL执行计划及索引最佳实践

    - **ID**:一组数字,表示执行SQL子句或操作表的顺序。ID相同的子句按从上到下的顺序执行;子查询中ID的序号会递增,id值越大优先级越高,越先被执行;在所有组中,ID值越大,优先级越高,越先执行。 - **SELECT_...

    MySQL使用profile查询性能的操作教程

    接下来,执行一条SQL查询,例如一个复杂的JOIN操作,然后通过`SHOW PROFILES`命令查看所有已执行查询的概要信息。此命令会列出每个查询的ID、持续时间和查询本身。如果想查看特定查询的详细执行步骤,可以使用`SHOW ...

    mysql性能工具的使用.txt

    MySQL还提供了一个内置的查询分析器——`PROFILING`功能,它可以跟踪并记录查询的执行过程,包括每个阶段所花费的时间等详细信息。这有助于深入了解查询的实际执行情况,找出可能存在的性能瓶颈。 启用`PROFILING`...

    Linux安装Mysql5.6教程(手把手教你)

    为了安全考虑,我们需要创建一个专门的MySQL用户组和用户来运行MySQL服务: ```bash groupadd mysql useradd -r -g mysql mysql ``` ##### 5. 修改MySQL目录权限 接下来,需要将MySQL目录的所有权更改为刚刚创建的...

    《Effective MySQL之SQL语句最优化》手册

    通过分析查询执行计划、监控系统资源使用情况,以及使用性能分析工具(如MySQL的EXPLAIN、SHOW PROFILE等),可以定位性能瓶颈,进而进行针对性的优化。 总的来说,《Effective MySQL之SQL语句最优化》旨在帮助读者...

Global site tag (gtag.js) - Google Analytics