SHOW STATUS 命令有什么用?
show status
命令返回一些会话级别的计数器。可以显示某些活动如读索引的频繁程度,但无法给出消耗了多少时间。
show global status
命令返回的是服务器级别的全局计数器。可以查看服务器级别的从服务器启动时开始计算的查询次数统计。无法给出消耗了多少时间。
最有用的计数器包括句柄计数器,临时文件和表计数器等。下面的例子展示如何将会话级别的计数器重置为0,然后查询视图,再检查计数器的结果:
mysql> FLUSH STATUS;
mysql> SELECT * FROM USER_VIEW;
mysql> SHOW STATUS WHERE Variable_name LIKE 'Handler%' OR Variable_name LIKE 'Created%';
+----------------------------+-------+
| Variable_name | Value |
| Created_tmp_disk_tables | 2 |
| Created_tmp_files | 0 |
| Created_tmp_tables | 3 |
| Handler_commit | 1 |
| Handler_delete | 0 |
| Handler_discover | 0 |
| Handler_prepare | 0 |
| Handler_read_first | 1 |
| Handler_read_key | 7286 |
| Handler_read_next | 6534 |
| Handler_read_prev | 0 |
| Handler_read_rnd | 5426 |
| Handler_read_rnd_next | 6421 |
| Handler_rollback | 0 |
| Handler_savepoint | 0 |
| Handler_savepoint_rollback | 0 |
| Handler_update | 0 |
| Handler_write | 6459 |
+----------------------------+-------+
从结果可以看出使用了3个临时表,其中两个是磁盘临时表。有很多没有用到索引的读操作(Handler_read_rnd_next
)。可以猜测这个查询做了多表联查,并没有用合适的索引,其中一个子查询创建了临时表,然后和其他表联合查询。用于保存子查询结果的临时表没有索引。
注意show status
本身也会创建一个临时表,也会通过句柄操作访问临时表,这会影响show status
结果中的数字。
其他获取性能报告途径
show profile
【高性能MySQL】性能分析之剖析单条查询SHOW PROFILE-腾讯云开发者社区-腾讯云performance schema
获得性能剖析报告后,怎么使用?
好的剖析报告能够将潜在的问题现实出来,但最终的解决方案还是需要用户来决定。优化查询时用户需要对服务器如何执行查询有较深的了解。剖析报告能够尽可能多的收集需要的信息,给出诊断问题的正确方向,以及为其他工具如EXPLAINT提供基础信息。
每天学习一点,每天进步一点!
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。