网站架构图怎么做每日精选12条新闻
文章目录
- 参数使能
- 查看最近一条SQL执行过程
- 查看profiling打开开后,所有SQL语句执行耗时
- 查看某一条SQL的执行过程
- 指定要查看的性能选项
- 查看所有性能选项
参数使能
以select
语句为例,首先打开profile
参数:
mysql> set profiling = 1;
Query OK, 0 rows affected, 1 warning (0.00 sec)
然后执行两边下面的语句:
mysql> select * from employees;
查看最近一条SQL执行过程
可以通过show profile
语句查看最近一条SQL的执行过程:
mysql> show profile;
+----------------------+----------+
| Status | Duration |
+----------------------+----------+
| starting | 0.000039 |
| checking permissions | 0.000004 |
| Opening tables | 0.000012 |
| init | 0.000014 |
| System lock | 0.000006 |
| optimizing | 0.000002 |
| statistics | 0.000008 |
| preparing | 0.000010 |
| executing | 0.000003 |
| Sending data | 0.000188 |
| end | 0.000004 |
| query end | 0.000006 |
| closing tables | 0.000008 |
| freeing items | 0.000104 |
| cleaning up | 0.000013 |
+----------------------+----------+
15 rows in set, 1 warning (0.00 sec)
可以看到一条SQL语句要经历上述15步。如果开启了SQL缓存且命中缓存的话,步骤会减少,但SQL缓存要求两条SQL必须完全一样才能命中,任何字符的更改(包括注释、空格等)都会导致缓存没命中,因此MySQL的缓存相当鸡肋,命中率很低。
查看profiling打开开后,所有SQL语句执行耗时
可以通过show profiles
开启profiling
后所有SQL语句的耗时:
mysql> show profiles;
+----------+------------+-------------------------+
| Query_ID | Duration | Query |
+----------+------------+-------------------------+
| 1 | 0.00070175 | select * from employees |
| 2 | 0.00041950 | select * from employees |
+----------+------------+-------------------------+
2 rows in set, 1 warning (0.00 sec)
查看某一条SQL的执行过程
可以通过show profile for query Query_ID
查看:
mysql> show profile for query 1;
+----------------------+----------+
| Status | Duration |
+----------------------+----------+
| starting | 0.000036 |
| checking permissions | 0.000004 |
| Opening tables | 0.000012 |
| init | 0.000013 |
| System lock | 0.000006 |
| optimizing | 0.000002 |
| statistics | 0.000008 |
| preparing | 0.000355 |
| executing | 0.000006 |
| Sending data | 0.000169 |
| end | 0.000003 |
| query end | 0.000005 |
| closing tables | 0.000006 |
| freeing items | 0.000070 |
| cleaning up | 0.000007 |
+----------------------+----------+
15 rows in set, 1 warning (0.00 sec)mysql> show profile for query 2;
+----------------------+----------+
| Status | Duration |
+----------------------+----------+
| starting | 0.000039 |
| checking permissions | 0.000004 |
| Opening tables | 0.000012 |
| init | 0.000014 |
| System lock | 0.000006 |
| optimizing | 0.000002 |
| statistics | 0.000008 |
| preparing | 0.000010 |
| executing | 0.000003 |
| Sending data | 0.000188 |
| end | 0.000004 |
| query end | 0.000006 |
| closing tables | 0.000008 |
| freeing items | 0.000104 |
| cleaning up | 0.000013 |
+----------------------+----------+
15 rows in set, 1 warning (0.00 sec)
指定要查看的性能选项
mysql> show profile CPU, block io;
+---------------+----------+----------+------------+--------------+---------------+
| Status | Duration | CPU_user | CPU_system | Block_ops_in | Block_ops_out |
+---------------+----------+----------+------------+--------------+---------------+
| starting | 0.000066 | 0.000000 | 0.000000 | NULL | NULL |
| freeing items | 0.000058 | 0.000000 | 0.000000 | NULL | NULL |
| cleaning up | 0.000004 | 0.000000 | 0.000000 | NULL | NULL |
+---------------+----------+----------+------------+--------------+---------------+
3 rows in set, 1 warning (0.00 sec)
查看所有性能选项
mysql> show profile all for query 1\G
*************************** 1. row ***************************Status: startingDuration: 0.000036CPU_user: 0.000000CPU_system: 0.000000Context_voluntary: NULL
Context_involuntary: NULLBlock_ops_in: NULLBlock_ops_out: NULLMessages_sent: NULLMessages_received: NULLPage_faults_major: NULLPage_faults_minor: NULLSwaps: NULLSource_function: NULLSource_file: NULLSource_line: NULL
*************************** 2. row ***************************Status: checking permissionsDuration: 0.000004CPU_user: 0.000000CPU_system: 0.000000Context_voluntary: NULL
Context_involuntary: NULLBlock_ops_in: NULLBlock_ops_out: NULLMessages_sent: NULLMessages_received: NULLPage_faults_major: NULLPage_faults_minor: NULLSwaps: NULLSource_function: check_accessSource_file: sql_authorization.ccSource_line: 802
*************************** 3. row ***************************Status: Opening tablesDuration: 0.000012CPU_user: 0.000000CPU_system: 0.000000Context_voluntary: NULL
Context_involuntary: NULLBlock_ops_in: NULLBlock_ops_out: NULLMessages_sent: NULLMessages_received: NULLPage_faults_major: NULLPage_faults_minor: NULLSwaps: NULLSource_function: open_tablesSource_file: sql_base.ccSource_line: 5714
*************************** 4. row ***************************Status: initDuration: 0.000013CPU_user: 0.000000CPU_system: 0.000000Context_voluntary: NULL
Context_involuntary: NULLBlock_ops_in: NULLBlock_ops_out: NULLMessages_sent: NULLMessages_received: NULLPage_faults_major: NULLPage_faults_minor: NULLSwaps: NULLSource_function: handle_querySource_file: sql_select.ccSource_line: 121
*************************** 5. row ***************************Status: System lockDuration: 0.000006CPU_user: 0.000000CPU_system: 0.000000Context_voluntary: NULL
Context_involuntary: NULLBlock_ops_in: NULLBlock_ops_out: NULLMessages_sent: NULLMessages_received: NULLPage_faults_major: NULLPage_faults_minor: NULLSwaps: NULLSource_function: mysql_lock_tablesSource_file: lock.ccSource_line: 323
*************************** 6. row ***************************Status: optimizingDuration: 0.000002CPU_user: 0.000000CPU_system: 0.000000Context_voluntary: NULL
Context_involuntary: NULLBlock_ops_in: NULLBlock_ops_out: NULLMessages_sent: NULLMessages_received: NULLPage_faults_major: NULLPage_faults_minor: NULLSwaps: NULLSource_function: JOIN::optimizeSource_file: sql_optimizer.ccSource_line: 151
*************************** 7. row ***************************Status: statisticsDuration: 0.000008CPU_user: 0.000000CPU_system: 0.000000Context_voluntary: NULL
Context_involuntary: NULLBlock_ops_in: NULLBlock_ops_out: NULLMessages_sent: NULLMessages_received: NULLPage_faults_major: NULLPage_faults_minor: NULLSwaps: NULLSource_function: JOIN::optimizeSource_file: sql_optimizer.ccSource_line: 367
*************************** 8. row ***************************Status: preparingDuration: 0.000355CPU_user: 0.000000CPU_system: 0.000000Context_voluntary: NULL
Context_involuntary: NULLBlock_ops_in: NULLBlock_ops_out: NULLMessages_sent: NULLMessages_received: NULLPage_faults_major: NULLPage_faults_minor: NULLSwaps: NULLSource_function: JOIN::optimizeSource_file: sql_optimizer.ccSource_line: 475
*************************** 9. row ***************************Status: executingDuration: 0.000006CPU_user: 0.000000CPU_system: 0.000000Context_voluntary: NULL
Context_involuntary: NULLBlock_ops_in: NULLBlock_ops_out: NULLMessages_sent: NULLMessages_received: NULLPage_faults_major: NULLPage_faults_minor: NULLSwaps: NULLSource_function: JOIN::execSource_file: sql_executor.ccSource_line: 119
*************************** 10. row ***************************Status: Sending dataDuration: 0.000169CPU_user: 0.000000CPU_system: 0.000000Context_voluntary: NULL
Context_involuntary: NULLBlock_ops_in: NULLBlock_ops_out: NULLMessages_sent: NULLMessages_received: NULLPage_faults_major: NULLPage_faults_minor: NULLSwaps: NULLSource_function: JOIN::execSource_file: sql_executor.ccSource_line: 195
*************************** 11. row ***************************Status: endDuration: 0.000003CPU_user: 0.000000CPU_system: 0.000000Context_voluntary: NULL
Context_involuntary: NULLBlock_ops_in: NULLBlock_ops_out: NULLMessages_sent: NULLMessages_received: NULLPage_faults_major: NULLPage_faults_minor: NULLSwaps: NULLSource_function: handle_querySource_file: sql_select.ccSource_line: 199
*************************** 12. row ***************************Status: query endDuration: 0.000005CPU_user: 0.000000CPU_system: 0.000000Context_voluntary: NULL
Context_involuntary: NULLBlock_ops_in: NULLBlock_ops_out: NULLMessages_sent: NULLMessages_received: NULLPage_faults_major: NULLPage_faults_minor: NULLSwaps: NULLSource_function: mysql_execute_commandSource_file: sql_parse.ccSource_line: 4946
*************************** 13. row ***************************Status: closing tablesDuration: 0.000006CPU_user: 0.000000CPU_system: 0.000000Context_voluntary: NULL
Context_involuntary: NULLBlock_ops_in: NULLBlock_ops_out: NULLMessages_sent: NULLMessages_received: NULLPage_faults_major: NULLPage_faults_minor: NULLSwaps: NULLSource_function: mysql_execute_commandSource_file: sql_parse.ccSource_line: 4998
*************************** 14. row ***************************Status: freeing itemsDuration: 0.000070CPU_user: 0.000000CPU_system: 0.000000Context_voluntary: NULL
Context_involuntary: NULLBlock_ops_in: NULLBlock_ops_out: NULLMessages_sent: NULLMessages_received: NULLPage_faults_major: NULLPage_faults_minor: NULLSwaps: NULLSource_function: mysql_parseSource_file: sql_parse.ccSource_line: 5610
*************************** 15. row ***************************Status: cleaning upDuration: 0.000007CPU_user: 0.000000CPU_system: 0.000000Context_voluntary: NULL
Context_involuntary: NULLBlock_ops_in: NULLBlock_ops_out: NULLMessages_sent: NULLMessages_received: NULLPage_faults_major: NULLPage_faults_minor: NULLSwaps: NULLSource_function: dispatch_commandSource_file: sql_parse.ccSource_line: 1924
15 rows in set, 1 warning (0.00 sec)
举其中的一行为例:*************************** 10. row ***************************Status: Sending dataDuration: 0.000169CPU_user: 0.000000CPU_system: 0.000000Context_voluntary: NULL
Context_involuntary: NULLBlock_ops_in: NULLBlock_ops_out: NULLMessages_sent: NULLMessages_received: NULLPage_faults_major: NULLPage_faults_minor: NULLSwaps: NULLSource_function: JOIN::execSource_file: sql_executor.ccSource_line: 195
每一行数据就显示该步骤下的各个阶段的耗时,甚至源文件等信息。