mysql 下 show profile 备忘

来源:互联网 发布:研究所升级数据 编辑:程序博客网 时间:2024/05/21 22:15

mysql 中可利用  show profile 进行性能分析

show profile 功能默认状态下为关闭, 因消耗一定资源

 

查询方法

mysql> select @@profiling;
+-------------+
| @@profiling |
+-------------+
|           0 |  0 = 关闭  1 = 启用
+-------------+
1 row in set (0.00 sec)

打开方法

mysql> set profiling = 1;
Query OK, 0 rows affected (0.00 sec)

mysql> select @@profiling;
+-------------+
| @@profiling |
+-------------+
|           1 |
+-------------+
1 row in set (0.00 sec)

启用 profiling 功能后就可以对 SQL 进行分析。

为避免之前已经把 SQL 存放在 QCACHE 中, 建议在执行 SQL 时, 强制 SELECT 语句不进行 QCACHE 检测

如下面 SQL

mysql> select sql_no_cache distinct prewarebro0_.ID as ID471_, prewarebro0_.SPECIFICATION_ID as SPECIFIC2_471_, prewarebro0_.SPECIES_ID as SPECIES3_471_, prewarebro0_.SPECIES_CODE as SPECIES4_471_, prewarebro0_.DETAIL_URL as DETAIL5_471_, prewarebro0_.SALEPRICE as SALEPRICE471_, prewarebro0_.TYPE as TYPE471_, prewarebro0_.CREATE_TIME as CREATE8_471_, prewarebro0_.PICTUREURL as PICTUREURL471_, prewarebro0_.USER_KO as USER10_471_ from PRE_WARE_BROSWERS prewarebro0_ cross join WARE_DIRECTORY_SUMA waredirect1_ cross join WARE_CON_DIECTORY warecondir2_ cross join WARE_MOUNTED waremounte3_ cross join WARE_CATALOG specificat4_ where waredirect1_.ID=warecondir2_.SUMA_ID and warecondir2_.ID=waremounte3_.CON_CODE and prewarebro0_.SPECIFICATION_ID=waremounte3_.MOUNT_CODE and prewarebro0_.SPECIFICATION_ID=specificat4_.ID and waredirect1_.STATUS='1' and waremounte3_.STATUS='1' and specificat4_.STATUS=1 and prewarebro0_.USER_KO='38a89ba4e0595ff0d06ab0744f64344f' order by prewarebro0_.CREATE_TIME desc limit 3 ;
Empty set (0.51 sec)

当执行完 SQL 之后,可以对该 SQL 进行分析, 如

mysql> show profile;
+----------------------+----------+
| Status               | Duration |
+----------------------+----------+
| starting             | 0.000793 |
| checking permissions | 0.000012 |
| checking permissions | 0.000006 |
| checking permissions | 0.000005 |
| checking permissions | 0.000005 |
| checking permissions | 0.000010 |
| Opening tables       | 0.000132 |
| System lock          | 0.000047 |
| init                 | 0.000160 |
| optimizing           | 0.000084 |
| statistics           | 0.000264 |
| preparing            | 0.000146 |
| Creating tmp table   | 0.000100 |
| executing            | 0.000008 |
| Copying to tmp table | 0.515277 |
| Sorting result       | 0.000045 |
| Sending data         | 0.000039 |
| end                  | 0.000012 |
| removing tmp table   | 0.000019 |
| end                  | 0.000008 |
| query end            | 0.000014 |
| closing tables       | 0.000055 |
| freeing items        | 0.000087 |
| logging slow query   | 0.000005 |
| cleaning up          | 0.000014 |
+----------------------+----------+
25 rows in set (0.00 sec)

我们看到了, 明显就是 copying to tmp table 值比较不正常,不进行字面解释了

看看当前我们电脑缓存了多少可以进行分析的 SQL

mysql> show profiles;
+----------+------------+------------------------------------------+
| Query_ID | Duration   | Query                                    |
+----------+------------+------------------------------------------+
|        1 | 0.00026925 | select * from ware_stocks where id < 15  |
|        2 | 0.00032250 | SELECT DATABASE()                        |
|        3 | 0.00102075 | show databases                           |
|        4 | 0.00388575 | show tables                              |
|        5 | 0.00021200 | select * from ware_stocks where id < 15  |
|        6 | 0.01826000 | select * from ware_stocks where id < 55  |
|        7 | 0.02039825 | select * from ware_stocks where id < 155 |
|        8 | 0.03401675 | select * from ware_stocks where id > 3   |
+----------+------------+------------------------------------------+
8 rows in set (0.00 sec)

上面记录了一共 8 条 SQL 分析, 假如要分析某一条, 那么可以执行 (参考上表中 ID 值进行分析)

mysql> show profile for query 8;
+--------------------------------+----------+
| Status                         | Duration |
+--------------------------------+----------+
| starting                       | 0.000164 |
| Waiting for query cache lock   | 0.000010 |
| checking query cache for query | 0.000197 |
| checking permissions           | 0.000026 |
| Opening tables                 | 0.000094 |
| System lock                    | 0.000038 |
| Waiting for query cache lock   | 0.000095 |
| init                           | 0.000122 |
| optimizing                     | 0.000025 |
| statistics                     | 0.000073 |
| preparing                      | 0.000032 |
| executing                      | 0.000008 |
| Sending data                   | 0.010331 |
| Waiting for query cache lock   | 0.000020 |
| Sending data                   | 0.005885 |
| Waiting for query cache lock   | 0.000011 |
| Sending data                   | 0.005877 |
| Waiting for query cache lock   | 0.000010 |
| Sending data                   | 0.005998 |
| Waiting for query cache lock   | 0.000011 |
| Sending data                   | 0.004589 |
| end                            | 0.000022 |
| query end                      | 0.000031 |
| closing tables                 | 0.000050 |
| freeing items                  | 0.000038 |
| Waiting for query cache lock   | 0.000010 |
| freeing items                  | 0.000213 |
| Waiting for query cache lock   | 0.000009 |
| freeing items                  | 0.000005 |
| storing result in query cache  | 0.000009 |
| logging slow query             | 0.000006 |
| cleaning up                    | 0.000010 |
+--------------------------------+----------+
32 rows in set (0.01 sec)

另外,还可以独立地分析某项资源,方便参考

o ALL displays all information

o BLOCK IO displays counts for block input and output operations

o CONTEXT SWITCHESdisplays counts for voluntary and involuntary
  context switches

o CPU displays user and system CPU usage times

o IPC displays counts for messages sent and received

o MEMORY is not currently implemented

o PAGE FAULTS displays counts for major and minor page faults

o SOURCE displays the names of functions from the source code, together
  with the name and line number of the file in which the function
  occurs

o SWAPS displays swap counts

参考之前信息,我们看看 Copying to tmp table的IO情况

mysql> show profile block io for query 9;
+----------------------+----------+--------------+---------------+
| Status               | Duration | Block_ops_in | Block_ops_out |
+----------------------+----------+--------------+---------------+
| starting             | 0.000483 |            0 |             0 |
| checking permissions | 0.000012 |            0 |             0 |
| checking permissions | 0.000006 |            0 |             0 |
| checking permissions | 0.000006 |            0 |             0 |
| checking permissions | 0.000006 |            0 |             0 |
| checking permissions | 0.000010 |            0 |             0 |
| Opening tables       | 0.000162 |            0 |             0 |
| System lock          | 0.000056 |            0 |             0 |
| init                 | 0.000179 |            0 |             0 |
| optimizing           | 0.000074 |            0 |             0 |
| statistics           | 0.000225 |            0 |             0 |
| preparing            | 0.000173 |            0 |             0 |
| Creating tmp table   | 0.000127 |            0 |             0 |
| executing            | 0.000008 |            0 |             0 |
| Copying to tmp table | 0.837154 |            0 |             8 | 产生 8 次的 IO 了用于创建 TMP TABLE 了
| Sorting result       | 0.000059 |            0 |             0 |
| Sending data         | 0.000050 |            0 |             0 |
| end                  | 0.000017 |            0 |             0 |
| removing tmp table   | 0.000025 |            0 |             0 |
| end                  | 0.000012 |            0 |             0 |
| query end            | 0.000018 |            0 |             0 |
| closing tables       | 0.000071 |            0 |             0 |
| freeing items        | 0.000097 |            0 |             0 |
| logging slow query   | 0.000006 |            0 |             0 |
| cleaning up          | 0.000012 |            0 |             0 |
+----------------------+----------+--------------+---------------+
25 rows in set (0.00 sec)

参考 CPU

mysql> show profile CPU for query 9;
+----------------------+----------+----------+------------+
| Status               | Duration | CPU_user | CPU_system |
+----------------------+----------+----------+------------+
| starting             | 0.000483 | 0.000000 |   0.000000 |
| checking permissions | 0.000012 | 0.000000 |   0.000000 |
| checking permissions | 0.000006 | 0.000000 |   0.000000 |
| checking permissions | 0.000006 | 0.000000 |   0.000000 |
| checking permissions | 0.000006 | 0.000000 |   0.000000 |
| checking permissions | 0.000010 | 0.000000 |   0.000000 |
| Opening tables       | 0.000162 | 0.002000 |   0.000000 |
| System lock          | 0.000056 | 0.000000 |   0.000000 |
| init                 | 0.000179 | 0.000000 |   0.000000 |
| optimizing           | 0.000074 | 0.000000 |   0.000000 |
| statistics           | 0.000225 | 0.000000 |   0.000000 |
| preparing            | 0.000173 | 0.000000 |   0.000000 |
| Creating tmp table   | 0.000127 | 0.000000 |   0.000000 |
| executing            | 0.000008 | 0.000000 |   0.000000 |
| Copying to tmp table | 0.837154 | 1.166823 |   0.001000| 也严重消耗了 CPU
| Sorting result       | 0.000059 | 0.000000 |   0.000000 |
| Sending data         | 0.000050 | 0.000000 |   0.000000 |
| end                  | 0.000017 | 0.000000 |   0.000000 |
| removing tmp table   | 0.000025 | 0.000000 |   0.000000 |
| end                  | 0.000012 | 0.000000 |   0.000000 |
| query end            | 0.000018 | 0.000000 |   0.000000 |
| closing tables       | 0.000071 | 0.000000 |   0.000000 |
| freeing items        | 0.000097 | 0.000000 |   0.000000 |
| logging slow query   | 0.000006 | 0.000000 |   0.000000 |
| cleaning up          | 0.000012 | 0.000000 |   0.000000 |
+----------------------+----------+----------+------------+
25 rows in set (0.01 sec)

总结, 分析后,切记 set profiling = 0 , 另外可以配合  explain 更方便地对执行计划进行分析。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 手机电源键坏了开不了机怎么办 手机开关键坏了开不了机怎么办 vivo手机解屏密码忘了怎么办 小米max关机后开关键坏了怎么办 联想手机刷机失败无限重启怎么办 红米2a显示白屏怎么办 小米6手机一直处于开机状态怎么办 怎么在手机上看wifi密码怎么办 怎么查自己的宽带密码忘记了怎么办 怎么查自己宽带账号密码忘了怎么办 电脑重置路由器密码连不上网怎么办 e盘和f盘没有了怎么办 复制文件过程中自己卡住了怎么办 电脑卡住了怎么办 鼠标也点不动 善领wifi连上网不能用怎么办 苹果手机软件更新后网速太慢怎么办 装了固态硬盘开机还慢怎么办 华为荣耀8青春版玩游戏卡怎么办 光猫自带wifi网络很差怎么办 侠盗猎车手自由城之章卡退怎么办? 夏天带头盔晃眼睛太厉害怎么办 别人把钱误转我卡上我怎么办? 家里预留的的网线太短怎么办 电信路由器坏了网线接口断了怎么办 数据线充手机的接头处断了怎么办 新买的小米手环充不进去电怎么办 绝地求生手游被队友故意炸死怎么办 一加3t屏幕开了怎么办? 孕妇吃了8个杏怎么办啊 洗碗盆落水器垫子密封不好怎么办? 手剥橙子剥的特别疼怎么办? 经常带对讲机的耳麦耳朵痛怎么办 公安检查遇到穿便装的军人怎么办 cf幽灵鬼呼吸辅军训刘海怎么办助 眼睛被等离子切割器的光烤了怎么办 玩王者的时候屏幕竖着了该怎么办 铝合金门双包门套比墙的厚了怎么办 磁共振检查后发现带金属了怎么办 贴了乳贴过免痒怎么办 yy别人听见我打游戏的声音怎么办 微信的聊天记录发错邮箱怎么办