当客户端连接到MySQL服务器时,它是在一个特定的用户名下从一个特定的主机上连接的。性能模式提供了关于这些连接的统计数据,跟踪每个帐户(用户和主机组合),以及分别跟踪每个用户名和主机名,使用这些表:
的意义”账户”在连接表中的含义类似于在MySQL授予表中的含义mysql
系统数据库,在某种意义上,该术语指的是用户值和主机值的组合。它们的不同之处在于,对于授权表,帐户的主机部分可以是一个模式,而对于性能模式表,主机值总是一个特定的非模式主机名。
每个连接表具有CURRENT_CONNECTIONS
而且TOTAL_CONNECTIONS
列来跟踪每个连接的当前和总数”跟踪价值”这是它的统计数据的基础。这些表的不同之处在于它们用于跟踪值的内容。的账户
表有用户
而且宿主
列用于跟踪每个用户和主机组合的连接。的用户
而且主机
表有一个用户
而且宿主
列,分别跟踪每个用户名和主机名的连接。
性能模式还使用的行对身份验证失败的用户会话的内部线程和线程进行计数用户
而且宿主
的列值零
.
假设客户机命名为user1
而且user2
每个连接一次从玉簪属草本植物
而且hostb
.性能模式以如下方式跟踪连接:
当客户端连接时,Performance Schema使用适用于每个表的跟踪值确定应用每个连接表中的哪一行。如果没有这样的行,则添加一行。然后性能模式增加一个CURRENT_CONNECTIONS
而且TOTAL_CONNECTIONS
行中的列。
当客户端断开连接时,性能模式减少一个CURRENT_CONNECTIONS
列,并离开TOTAL_CONNECTIONS
列不变。
截断表
允许连接表。它有以下影响:
删除当前没有连接的帐户、主机或用户的行
Current_connections = 0
).未移除的行将被重置为仅计算当前连接
Current_connections > 0
,TOTAL_CONNECTIONS
重置为CURRENT_CONNECTIONS
.依赖于连接表的汇总表将隐式截断,如本节后面所述。
性能模式维护汇总表,这些汇总表按帐户、主机或用户聚合各种事件类型的连接统计信息。这些表格有_summary_by_account
,_summary_by_host
,或_summary_by_user
在名字上。要识别它们,使用以下查询:
SELECT TABLE_NAME FROM INFORMATION_SCHEMAWHERE TABLE_SCHEMA = 'performance_schema' AND TABLE_NAME REGEXP '_summary_by_(帐户|主机|用户)' ORDER BY TABLE_NAME;+------------------------------------------------------+ | TABLE_NAME | +------------------------------------------------------+ | events_errors_summary_by_account_by_error | | events_errors_summary_by_host_by_error | | events_errors_summary_by_user_by_error | | events_stages_summary_by_account_by_event_name | | events_stages_summary_by_host_by_event_name | | events_stages_summary_by_user_by_event_name | | events_statements_summary_by_account_by_event_name | |events_statements_summary_by_host_by_event_name | | events_statements_summary_by_user_by_event_name | | events_transactions_summary_by_account_by_event_name | | events_transactions_summary_by_host_by_event_name | | events_transactions_summary_by_user_by_event_name | | events_waits_summary_by_account_by_event_name | | events_waits_summary_by_host_by_event_name | | events_waits_summary_by_user_by_event_name | | memory_summary_by_account_by_event_name | | memory_summary_by_host_by_event_name | |memory_summary_by_user_by_event_name | +------------------------------------------------------+
有关各个连接汇总表的详细信息,请参阅描述汇总表事件类型的部分:
等待事件摘要:第10.20.1节,“等待事件汇总表”
阶段事件总结:第10.20.2节“阶段汇总表”
语句事件摘要:第10.20.3节“报表汇总表”
事务事件摘要:第10.20.5节“交易汇总表”
内存事件摘要:第10.20.10节“内存汇总表”
错误事件摘要:第10.20.11节,“错误汇总表”
截断表
允许用于连接汇总表。它删除没有连接的帐户、主机或用户的行,并将其余行的摘要列重置为零。此外,由帐户、主机、用户或线程聚合的每个汇总表将通过截断它所依赖的连接表隐式地截断。下表描述了连接表截断和隐式截断表之间的关系。
表10.2连接表截断的隐含影响
截断连接表 | 隐式截断汇总表 |
---|---|
账户 |
表的名称包含_summary_by_account ,_summary_by_thread |
主机 |
表的名称包含_summary_by_account ,_summary_by_host ,_summary_by_thread |
用户 |
表的名称包含_summary_by_account ,_summary_by_user ,_summary_by_thread |
删除一个_summary_global
汇总表还隐式截断其对应的连接和线程汇总表。例如,截断events_waits_summary_global_by_event_name
隐式截断按帐户、主机、用户或线程聚合的等待事件汇总表。