在做数据库优化的过程中可以通过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;
通过 show profile for query语句能够看到执行过程中线程的每个状态和消耗的时间:
show profile cpu for query 4;
——————————————————————————————————————
innodb_buffer_pool_size的参数设置详见:
https://blog.csdn.net/sunny05296/article/details/78916775
-- innodb_buffer_pool_size=128M
相关推荐
要使用该功能,mysql的版本必须在5.0.37版本以上。否则只能使用explain 的方式来检查。 profiling 功能可以了解到cpu io 等更详细的信息。 show profile 的格式如下: SHOW PROFILE [type [, type] ... ] [FOR ...
MySQL 的 `Profiles` 功能是一个非常强大的工具,它允许数据库管理员和开发者深入了解 SQL 语句的执行过程,从而优化数据库性能。这一特性自 MySQL 5.0.37 版本引入,为用户提供了比 `EXPLAIN` 更深入的洞察,包括 ...
慢查询日志是MySQL的一个重要功能,用于记录执行时间超过特定阈值的查询。通过分析慢查询日志,我们可以找出耗时较长的SQL语句,进而进行优化。开启慢查询日志需要设置`slow_query_log`变量,并配置适当的阈值,如`...
以上内容涵盖了MySQL数据库性能优化的关键领域,包括SQL执行频率分析、慢查询日志分析、Profile详情分析以及EXPLAIN执行计划分析。通过这些工具和技术的应用,不仅可以提高数据库性能,还能确保应用程序的高效稳定...
`SHOW PROFILE` 显示的每条SQL语句都有一个查询ID,通过这个ID,你可以进一步分析CPU、内存、IO等资源的使用情况。例如,`show profile cpu,block io for query ;` 将显示与指定查询ID相关的CPU和IO消耗。`Status` ...
2. **使用Performance Schema**:这是一个更为详细的监控工具,可以跟踪资源消耗、等待事件等。例如,通过查询`events_statements_summary_by_digest`来找出执行最多的SQL语句,或者查看平均响应时间最长的SQL。 在...
- 使用 `mysqld --initialize` 初始化 MySQL 数据库,初始化完成后会生成一个临时密码,建议记录下来以便后续使用。 - 给 MySQL 加密以增强安全性。 2. **启动 MySQL 服务**: - 使用命令 `service mysql start`...
`SHOW PROFILES`是MySQL提供的一种工具,用于分析SQL语句在执行过程中的资源消耗情况,帮助我们定位性能瓶颈。本篇将深入讲解`SHOW PROFILES`的使用方法和解析结果。 首先,`SHOW PROFILES`默认是关闭的,我们需要...
首先,`PROFILE`是MySQL提供的一种性能分析工具,用于追踪SQL语句的执行过程,它详细列出了每一步操作的时间消耗,包括解析、预处理、执行等阶段,帮助我们找到性能瓶颈。例如,在开启`profiling`后,我们可以通过`...
- **ID**:一组数字,表示执行SQL子句或操作表的顺序。ID相同的子句按从上到下的顺序执行;子查询中ID的序号会递增,id值越大优先级越高,越先被执行;在所有组中,ID值越大,优先级越高,越先执行。 - **SELECT_...
接下来,执行一条SQL查询,例如一个复杂的JOIN操作,然后通过`SHOW PROFILES`命令查看所有已执行查询的概要信息。此命令会列出每个查询的ID、持续时间和查询本身。如果想查看特定查询的详细执行步骤,可以使用`SHOW ...
MySQL还提供了一个内置的查询分析器——`PROFILING`功能,它可以跟踪并记录查询的执行过程,包括每个阶段所花费的时间等详细信息。这有助于深入了解查询的实际执行情况,找出可能存在的性能瓶颈。 启用`PROFILING`...
为了安全考虑,我们需要创建一个专门的MySQL用户组和用户来运行MySQL服务: ```bash groupadd mysql useradd -r -g mysql mysql ``` ##### 5. 修改MySQL目录权限 接下来,需要将MySQL目录的所有权更改为刚刚创建的...
通过分析查询执行计划、监控系统资源使用情况,以及使用性能分析工具(如MySQL的EXPLAIN、SHOW PROFILE等),可以定位性能瓶颈,进而进行针对性的优化。 总的来说,《Effective MySQL之SQL语句最优化》旨在帮助读者...