29.12.15 性能架构状态变量表
MySQL服务器维护许多状态变量,提供有关其操作的信息(参见第7.1.10节,“Server Status Variables”)。状态变量信息可在这些性能架构表中找到:
-
global_ status
:全局状态变量。应用程序如果只想获取全局值,应该使用这个表。 -
session_status
:当前会话的状态变量。应用程序如果想获取其自身会话的所有状态变量值,应该使用这个表。它包括该会话的会话变量,以及没有对应会话变量的全局变量的值。 -
status_by_thread
:每个活动会话的状态变量。应用程序如果想知道特定会话的会话变量值,应该使用这个表。它只包含会话变量,与线程ID标识。
还有总结表,它们提供了按帐户、主机名和用户名聚合的状态变量信息。参见第29.12.20.12节,“Status Variable Summary Tables”。
session变量表(session_status
,status_by_thread
)只包含活动会话的信息,不包括终止会话。
性能架构收集全局状态变量的统计数据,只有对于threads
表中INSTRUMENTED值为YES的线程。无论INSTRUMENTED值如何,session状态变量总是收集统计数据。
性能架构不收集Com_
状态变量的统计数据。要获取全局和按会话的语句执行计数,使用xxx
events_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状态变量表(session_status
)有这些列:
-
VARIABLE_NAME
状态变量的名称。
-
VARIABLE_VALUE
状态变量的值。对于
global_status
,这个列包含全局值;对于session_status
,这个列包含当前会话的变量值。
全局状态变量表(global_status
)和session状态变量表(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的值)且允许的最大线程对象数量不超过后台线程数,表格为空。
性能模式支持《TRUNCATE TABLE
》操作,用于状态变量表格如下:
-
global_status
:重置线程、账户、主机和用户的状态。重置除服务器从不重置的全局状态变量外的所有全局状态。 -
session_status
:不支持。 -
status_by_thread
:将所有线程的状态聚合到全局状态和账户状态中,然后重置线程状态。如果不收集账户统计信息,则会将会话状态添加到主机和用户状态中,如果收集了主机和用户状态。如果《
performance_schema_accounts_size
》、《performance_schema_hosts_size
》和《performance_schema_users_size
》系统变量分别设置为0,则不收集账户、主机和用户的统计信息。
FLUSH STATUS
将所有活动会话的会话状态添加到全局状态变量中,重置所有活动会话的状态,并重置从断开连接的会话聚合的账户、主机和用户状态值。