性能模式维护语句事件摘要表,包含最小、最大和平均语句延迟信息(见第 29.12.20.3 节,“语句摘要表”)。这些表允许对系统性能进行高级评估。为了在更细粒度级别上评估,性能模式还收集语句延迟的直方图数据。这些直方图提供了延迟分布的附加见解。
第 29.12.6 节,“性能模式语句事件表”描述了语句摘要基于的事件。请参阅该讨论以获取语句事件的内容、当前和历史语句事件表的信息,以及如何控制语句事件收集,默认情况下部分禁用。
示例语句直方图信息:
mysql> SELECT *
FROM performance_schema.events_statements_histogram_by_digest
WHERE SCHEMA_NAME = 'mydb' AND DIGEST = 'bb3f69453119b2d7b3ae40673a9d4c7c'
AND COUNT_BUCKET > 0 ORDER BY BUCKET_NUMBER\G
*************************** 1. row ***************************
SCHEMA_NAME: mydb
DIGEST: bb3f69453119b2d7b3ae40673a9d4c7c
BUCKET_NUMBER: 42
BUCKET_TIMER_LOW: 66069344
BUCKET_TIMER_HIGH: 69183097
COUNT_BUCKET: 1
COUNT_BUCKET_AND_LOWER: 1
BUCKET_QUANTILE: 0.058824
*************************** 2. row ***************************
SCHEMA_NAME: mydb
DIGEST: bb3f69453119b2d7b3ae40673a9d4c7c
BUCKET_NUMBER: 43
BUCKET_TIMER_LOW: 69183097
BUCKET_TIMER_HIGH: 72443596
COUNT_BUCKET: 1
COUNT_BUCKET_AND_LOWER: 2
BUCKET_QUANTILE: 0.117647
*************************** 3. row ***************************
SCHEMA_NAME: mydb
DIGEST: bb3f69453119b2d7b3ae40673a9d4c7c
BUCKET_NUMBER: 44
BUCKET_TIMER_LOW: 72443596
BUCKET_TIMER_HIGH: 75857757
COUNT_BUCKET: 2
COUNT_BUCKET_AND_LOWER: 4
BUCKET_QUANTILE: 0.235294
*************************** 4. row ***************************
SCHEMA_NAME: mydb
DIGEST: bb3f69453119b2d7b3ae40673a9d4c7c
BUCKET_NUMBER: 45
BUCKET_TIMER_LOW: 75857757
BUCKET_TIMER_HIGH: 79432823
COUNT_BUCKET: 6
COUNT_BUCKET_AND_LOWER: 10
BUCKET_QUANTILE: 0.625000
...
例如,在第 3 行,这些值表明 23.52% 的查询在 75.86 微秒内运行:
BUCKET_TIMER_HIGH: 75857757
BUCKET_QUANTILE: 0.235294
在第 4 行,这些值表明 62.50% 的查询在 79.44 微秒内运行:
BUCKET_TIMER_HIGH: 79432823
BUCKET_QUANTILE: 0.625000
每个语句直方图摘要表都有一个或多个分组列,以指示表如何聚合事件:
-
events_statements_histogram_by_digest有SCHEMA_NAME、DIGEST和BUCKET_NUMBER列:-
SCHEMA_NAME和DIGEST列标识events_statements_summary_by_digest表中的语句摘要行。 -
events_statements_histogram_by_digest行具有相同的SCHEMA_NAME和DIGEST值,组成该模式/摘要组合的直方图。 -
在给定的直方图中,
BUCKET_NUMBER列指示桶号。
-
-
events_statements_histogram_global有一个BUCKET_NUMBER列。该表总结了跨模式名称和摘要值的延迟,使用单个直方图。BUCKET_NUMBER列指示该全局直方图中的桶号。
直方图由 N 个桶组成,每行代表一个桶,桶号由 BUCKET_NUMBER 列指示。桶号从 0 开始。
每个语句直方图摘要表都有这些汇总列,包含聚合值:
-
BUCKET_TIMER_LOW、BUCKET_TIMER_HIGH一个桶计数语句,延迟在 picoseconds 中测量,介于
BUCKET_TIMER_LOW和BUCKET_TIMER_HIGH之间:-
第一个桶 (
BUCKET_NUMBER= 0) 的BUCKET_TIMER_LOW值为 0。 -
桶 (
BUCKET_NUMBER=k) 的BUCKET_TIMER_LOW值与前一个桶 (BUCKET_NUMBER=k−1) 的BUCKET_TIMER_HIGH值相同。 -
最后一个桶是一个 catch-all,用于捕捉延迟超过前一个桶的语句。
-
-
COUNT_BUCKET在延迟介于
BUCKET_TIMER_LOW和BUCKET_TIMER_HIGH之间的语句数量。 -
COUNT_BUCKET_AND_LOWER在延迟介于 0 到
BUCKET_TIMER_HIGH之间的语句数量。 -
BUCKET_QUANTILE语句的比例,落入该桶或更低的桶中。该比例定义为
COUNT_BUCKET_AND_LOWER / SUM(COUNT_BUCKET),并作为便捷列显示。
语句直方图摘要表具有这些索引:
-
events_statements_histogram_by_digest:-
在 (
SCHEMA_NAME,DIGEST,BUCKET_NUMBER) 上的唯一索引
-
-
events_statements_histogram_global:-
在 (
BUCKET_NUMBER) 上的主键
-
TRUNCATE TABLE 在语句直方图摘要表中是允许的。截断将 COUNT_BUCKET 和 COUNT_BUCKET_AND_LOWER 列设置为 0。
此外,截断 events_statements_summary_by_digest隐式截断 events_statements_histogram_by_digest,截断 events_statements_summary_global_by_event_name隐式截断 events_statements_histogram_global。