数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

高性能MySQL:剖析单条查询(2)[2]


发布日期:2023年06月05日
 
高性能MySQL:剖析单条查询(2)[2]

使用SHOW STATUS

MySQL 的SHOW STATUS 命令返回了一些计数器既有服务器级别的全局计数器也有基于某个连接的会话级别的计数器例如其中的Queries注 在会话开始时为每提交一条查询增加如果执行SHOW GLOBAL STATUS(注意到新加的GLOBAL 关键字)则可以查看服务器级别的从服务器启动时开始计算的查询次数统计不同计数器的可见范围不一样不过全局的计数器也会出现在SHOW STATUS 的结果中容易被误认为是会话级别的千万不要搞迷糊了在使用这个命令的时候要注意几点就像前面所讨论的收集合适级别的测量值是很关键的如果打算优化从某些特定连接观察到的东西测量的却是全局级别的数据就会导致混乱MySQL 官方手册中对所有的变量是会话级还是全局级做了详细的说明

SHOW STATUS 是一个有用的工具但并不是一款剖析工具SHOW STATUS 的大部分结果都只是一个计数器可以显示某些活动如读索引的频繁程度但无法给出消耗了多少时间SHOW STATUS 的结果中只有一条指的是操作的时间(Innodb_row_lock_time)而且只能是全局级的所以还是无法测量会话级别的工作

尽管SHOW STATUS 无法提供基于时间的统计但对于在执行完查询后观察某些计数器的值还是有帮助的有时候可以猜测哪些操作代价较高或者消耗的时间较多最有用的计数器包括句柄计数器(handler counter)临时文件和表计数器等在附录B 中会对此做更详细的解释下面的例子演示了如何将会话级别的计数器重置为然后查询前面(使用SHOW PROFILE一节)提到的视图再检查计数器的结果

mysql> FLUSH STATUS;

mysql> SELECT * FROM sakilanicer_but_slower_film_list;

[query results omitted]

mysql> SHOW STATUS WHERE Variable_name LIKE Handler%

OR Variable_name LIKE Created%;

+++

| Variable_name | Value |

+++

| Created_tmp_disk_tables | |

| Created_tmp_files | |

| Created_tmp_tables | |

| Handler_commit | |

| Handler_delete | |

| Handler_discover | |

| Handler_prepare | |

| Handler_read_first | |

| Chapter :Profiling Server Performance

| Handler_read_key | |

| Handler_read_next | |

| Handler_read_prev | |

| Handler_read_rnd | |

| Handler_read_rnd_next | |

| Handler_rollback | |

| Handler_savepoint | |

| Handler_savepoint_rollback | |

| Handler_update | |

| Handler_write | |

+++

返回目录高性能MySQL

编辑推荐

ASP NET开发培训视频教程

数据仓库与数据挖掘培训视频教程

Oracle索引技术

[] []

               

上一篇:高性能MySQL:剖析单条查询(1)[1]

下一篇:高性能MySQL:剖析单条查询(2)[1]