2.8.4节已经介绍了如何使用Performance Schema来调研锁的问题,但是它还有许多其他性能相关的用法。这里将介绍一组以SETUP_名字开头的表,并且让你控制哪些事件是被监控的。下面是一些示例的内容:
这里使用COUNT,因为知道有多少事件被执行可以帮助你找到它们对于你的MySQL负载的贡献。名称以_HISTORY结尾的表存储关于哪个事件发生了的信息,名称以_SUMMARY结尾的表包含基于各种参数的事件总结。这里将给出使用这些表的示例。例如,你可以找到哪些实例使用最多的时间或者锁定最长的时间。这可以揭示某些方面的性能,而这些性能可以提升。
6.5.5 Show [GLOBAL] STATUS
第3章介绍了与配置选项相关的状态变量。这里会补充其他状态变量的信息。像服务器变量,状态变量可以为全局与单个会话。当客户端连接时,会话变量会设置为0。全局变量显示从服务器启动或最近执行FLUSH STATUS查询之后的状态。
当通过状态变量来进行故障诊断时,不能仅仅查看单独的值,而应该随着时间的推移持续观察。一个非常大的值本身并不意味着任何情况;也许你足够幸运经历多年的正常运行。如果它很大并且增长速度很快,你可能就能看到一个问题的迹象。在临界负载下,我建议我们的客户在每5~10分钟的时间间隔里,通过SHOW GLOBAL STATUS采集其输出,然后对比不同时间段的变量值。这是找到有用信息最简单的方式。下面的列表主要集中在一些特定类型的状态变量上。Com_*状态变量这些变量包含的数量执行的各种类型。例如,Com_select显示有多少SELECT查询执行,Com_begin显示有多少事务开始。使用这些变量能得到负载的一个概述。例如,如果你得到一个大的Com_select值,与之相关的Com_insert、Com_update、与Com_delete是0,你就可以针对偏爱的SELECT查询来调整配置选项。Handler_*、Select_*和Sort_*变量Handler_*变量显示当查询执行时,表内部发生了什么。例如,Handler_delete显示实际上有多少行被删除。可以使用此变量来观察在当前运行的一个大表上,执行DELETE的进度。Select_*变量显示使用到的不同连接的数目。Sort_*变量显示关于排序的信息。它们能帮你找到你的查询在性能方面的效果如何。1.6.5节介绍了这些变量,所以不会在这里花更多的时间,但是它们确实值得详细研究。Innodb_*变量顾名思义,这些变量显示了InnoDB存储引擎的内部状态。当使用InnoDB引擎时,研究它们并确定它们如何被不同的InnoDB选项所影响。Performance_schema_*变量performance schema提供关于“监测点”对象的信息,其中监测点是在MySQL服务器或者存储引擎源代码中创建的。这些变量显示有多少监测不能加载或创建。Ssl_*变量这些显示关于SSL连接的统计信息。*open*和*create*变量包含这些关键字的变量显示有多少不同类型的对象被打开或关闭。其他状态变量的目的或者可以通过它们的名字能推断出来或者在第3章中能找到。