MySQL PROFILE 跟踪语句各阶段性能开销
2017-02-26 19:17
357 查看
PROFILE 可以跟踪查询语句各个阶段 Time,IO,CPU,MEMORY 等资源使用情况,比较详细。所以系统一般不会记录太多。启用是全局的,所以每个连接都保持语句的资源使用情况。
查看 PROFILE 是否启用:
mysql> select @@profiling;
+-------------+
| @@profiling |
+-------------+
| 0 |
+-------------+
mysql> show variables like '%profiling%';
+------------------------+-------+
| variable_name | value |
+------------------------+-------+
| have_profiling | yes |
| profiling | off |
| profiling_history_size | 15 |
+------------------------+-------+have_profiling :是否可使用 profiling
profiling :是否启用
profiling_history_size : 保留最近执行的记录数量。默认15,最大100,0相当于禁用。
启用(为全局变量):
mysql> set profiling = 1;
mysql> set profiling_history_size = 10;查看当前连接最近执行语句情况,编号越大为当前最近执行的。
查看以上查询开销:SHOW PROFILE Syntax
SHOW PROFILE [type [, type] ... ]
[FOR QUERY n]
[LIMIT row_count [OFFSET offset]]
type:
ALL
| BLOCK IO
| CONTEXT SWITCHES
| CPU
| IPC
| MEMORY
| PAGE FAULTS
| SOURCE
| SWAPS
默认显示时间信息,显示了该查询从开始到被清除各个阶段的执行时间。
关闭跟踪:
set profiling = 0;
set profiling_history_size = 0;
参考:
SHOW PROFILE Syntax
The INFORMATION_SCHEMA PROFILING Table
查看 PROFILE 是否启用:
mysql> select @@profiling;
+-------------+
| @@profiling |
+-------------+
| 0 |
+-------------+
mysql> show variables like '%profiling%';
+------------------------+-------+
| variable_name | value |
+------------------------+-------+
| have_profiling | yes |
| profiling | off |
| profiling_history_size | 15 |
+------------------------+-------+have_profiling :是否可使用 profiling
profiling :是否启用
profiling_history_size : 保留最近执行的记录数量。默认15,最大100,0相当于禁用。
启用(为全局变量):
mysql> set profiling = 1;
mysql> set profiling_history_size = 10;查看当前连接最近执行语句情况,编号越大为当前最近执行的。
mysql> show profiles; +----------+------------+-----------------------------------------+ | query_id | duration | query | +----------+------------+-----------------------------------------+ | 2 | 0.00705950 | show variables like '%profiling%' | | 3 | 0.00127400 | select * from mysql.user | | 4 | 0.00029100 | select * from mysql.user | | 5 | 0.00040850 | select * from mysql.user limit 10 | | 6 | 5.00128000 | select sleep(5) | | 7 | 0.00044425 | select * from mysql.user limit 1 | | 8 | 0.00436100 | show variables like '%profiling%' | | 9 | 0.00047725 | select * from mysql.slow_log | | 10 | 0.00052150 | select * from mysql.slow_log order by 1 | | 11 | 0.00049775 | select * from mysql.slow_log order by 2 | +----------+------------+-----------------------------------------+
查看以上查询开销:SHOW PROFILE Syntax
SHOW PROFILE [type [, type] ... ]
[FOR QUERY n]
[LIMIT row_count [OFFSET offset]]
type:
ALL
| BLOCK IO
| CONTEXT SWITCHES
| CPU
| IPC
| MEMORY
| PAGE FAULTS
| SOURCE
| SWAPS
默认显示时间信息,显示了该查询从开始到被清除各个阶段的执行时间。
mysql> show profile; +----------------------+----------+ | Status | Duration | +----------------------+----------+ | starting | 0.000090 | | checking permissions | 0.000007 | | Opening tables | 0.000048 | | init | 0.000033 | | System lock | 0.000006 | | optimizing | 0.000018 | | statistics | 0.000018 | | preparing | 0.000015 | | Sorting result | 0.000006 | | executing | 0.000328 | | Sending data | 0.000016 | | Creating sort index | 0.000081 | | end | 0.000004 | | query end | 0.000006 | | closing tables | 0.000003 | | removing tmp table | 0.000005 | | closing tables | 0.000004 | | freeing items | 0.000068 | | cleaning up | 0.000017 | +----------------------+----------+其他查看方法:
mysql> show profile; mysql> select * from information_schema.profiling; mysql> select * from information_schema.profiling where query_id=6 or mysql> show profile; #默认显示时间信息 mysql> show profile CPU,BLOCK IO; #(时间)加上 CPU,BLOCK IO 使用情况 mysql> show profile for query 6; #query_id=6的(时间)信息 mysql> show profile CPU for query 6; #query_id=6的cpu信息 mysql> show profile CPU limit 6; #前6个状态信息(前6行) mysql> show profile CPU limit 6 offset 2;#第2行起前6个状态信息(前2~7行)
关闭跟踪:
set profiling = 0;
set profiling_history_size = 0;
参考:
SHOW PROFILE Syntax
The INFORMATION_SCHEMA PROFILING Table
相关文章推荐
- MySQL 性能跟踪语句
- MySQL 性能跟踪语句
- MySQL 性能跟踪语句
- MySQL 性能跟踪语句
- MySQL性能分析语句 show profile/show profiles
- MySQL 性能跟踪语句
- mysql使用profile分析语句性能消耗
- MySQL性能分析语句 show profile/show profiles
- MySQL 性能跟踪语句
- MySQL性能分析语句 show profile/show profiles
- MySQL 性能跟踪语句
- sql一些语句性能及开销优化
- loadrunner测试mysql中某个sql语句或存储过程的性能分享
- mysql sql语句性能分析
- MySQL插入语句insert性能优化
- sql一些语句性能及开销优化
- mysql查询语句in和exists二者的区别和性能影响
- Mysql的Select查询语句性能检测工…
- Mysql Limit语句性能测试