MySQL 服务器维护许多状态变量,这些变量提供有关其操作的信息(请参阅 第 7.1.10 节“服务器状态变量”)。可以在以下性能模式表中找到状态变量信息
global_status:全局状态变量。想要获取仅全局值的应用程序应使用此表。session_status:当前会话的状态变量。想要获取其自身会话的所有状态变量值的应用程序应使用此表。它包括其会话的会话变量,以及没有会话对应项的全局变量的值。status_by_thread:每个活动会话的会话状态变量。想要了解特定会话的会话变量值的应用程序应使用此表。它仅包括会话变量,由线程 ID 标识。
还有一些汇总表,按帐户、主机名和用户名汇总提供状态变量信息。请参阅 第 29.12.20.12 节“状态变量汇总表”。
会话变量表(session_status,status_by_thread)仅包含有关活动会话的信息,而不包含有关已终止会话的信息。
性能模式仅为 threads 表中 INSTRUMENTED 值为 YES 的线程收集全局状态变量的统计信息。无论 INSTRUMENTED 值如何,始终收集有关会话状态变量的统计信息。
性能模式不会在状态变量表中收集有关 Com_ 状态变量的统计信息。要获取全局和每个会话的语句执行计数,请分别使用 xxxevents_statements_summary_global_by_event_name 和 events_statements_summary_by_thread_by_event_name 表。例如
SELECT EVENT_NAME, COUNT_STAR
FROM performance_schema.events_statements_summary_global_by_event_name
WHERE EVENT_NAME LIKE 'statement/sql/%';global_status 和 session_status 表具有以下列
VARIABLE_NAME状态变量名称。
VARIABLE_VALUE状态变量值。对于
global_status,此列包含全局值。对于session_status,此列包含当前会话的变量值。
global_status 和 session_status 表具有以下索引
对 (
VARIABLE_NAME) 的主键
status_by_thread 表包含每个活动线程的状态。它具有以下列
THREAD_ID定义状态变量的会话的线程标识符。
VARIABLE_NAME状态变量名称。
VARIABLE_VALUE由
THREAD_ID列命名的会话的会话变量值。
status_by_thread表包含以下索引
主键为 (
THREAD_ID,VARIABLE_NAME)
status_by_thread表仅包含有关前台线程的状态变量信息。 如果performance_schema_max_thread_instances系统变量未自动缩放(由值为 -1 表示)并且允许的最大已测线程对象数量不超过后台线程数量,则该表为空。
Performance Schema 支持对状态变量表执行TRUNCATE TABLE,如下所示
global_status:重置线程、帐户、主机和用户状态。 重置全局状态变量,除了服务器永远不会重置的那些变量。session_status:不支持。status_by_thread:将所有线程的状态聚合到全局状态和帐户状态,然后重置线程状态。 如果未收集帐户统计信息,则会话状态将添加到主机和用户状态(如果收集了主机和用户状态)。如果
performance_schema_accounts_size、performance_schema_hosts_size和performance_schema_users_size系统变量分别设置为 0,则不会收集帐户、主机和用户统计信息。
FLUSH STATUS 将所有活动会话的会话状态添加到全局状态变量,重置所有活动会话的状态,并重置从断开连接的会话聚合的帐户、主机和用户状态值。