当客户端连接到 MySQL 服务器时,它会使用特定的用户名和特定的主机进行连接。Performance Schema 提供有关这些连接的统计信息,使用这些表按帐户(用户和主机组合)以及按用户名和主机名单独跟踪它们:
连接表中“帐户”
的含义类似于
mysql
系统数据库中 MySQL 授权表中的含义,在这个意义上,该术语指的是用户和主机值的组合。它们的不同之处在于,对于授权表,帐户的主机部分可以是模式,而对于性能模式表,主机值始终是特定的非模式主机名。
每个连接表都有CURRENT_CONNECTIONS
和列来跟踪每个“跟踪值”TOTAL_CONNECTIONS
的当前连接数和总连接数,其统计信息基于此。这些表的不同之处在于它们用于跟踪值的内容。该
表有
和列来跟踪每个用户和主机组合的连接。和
表分别有一个
和
列,用于跟踪每个用户名和主机名的连接。
accounts
USER
HOST
users
hosts
USER
HOST
Performance Schema 还计算内部线程和未通过身份验证的用户会话的线程,
USER
使用HOST
具有NULL
.
假设名为user1
和
的客户端分别从和user2
连接一次
。性能模式跟踪连接如下:
hosta
hostb
当客户端连接时,性能模式使用适合每个表的跟踪值来确定每个连接表中的哪一行适用。如果没有这样的行,则添加一个。然后 Performance Schema 在该行中增加一个
CURRENT_CONNECTIONS
和
TOTAL_CONNECTIONS
列。
当客户端断开连接时,Performance SchemaCURRENT_CONNECTIONS
将行中的列递减一个并保持该TOTAL_CONNECTIONS
列不变。
TRUNCATE TABLE
允许用于连接表。它具有以下效果:
对于没有当前连接的帐户、主机或用户(带有 的行
CURRENT_CONNECTIONS = 0
),行已删除。未删除的行被重置为仅计算当前连接:对于带有 的行
CURRENT_CONNECTIONS > 0
,TOTAL_CONNECTIONS
重置为CURRENT_CONNECTIONS
。依赖于连接表的汇总表被隐式截断,如本节后面所述。
性能模式维护汇总表,按帐户、主机或用户聚合各种事件类型的连接统计信息。这些表的名称中包含
_summary_by_account
、
_summary_by_host
或
_summary_by_user
。要识别它们,请使用此查询:
mysql> SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'performance_schema'
AND TABLE_NAME REGEXP '_summary_by_(account|host|user)'
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 |
+------------------------------------------------------+
有关各个连接摘要表的详细信息,请参阅描述摘要事件类型表的部分:
等待事件摘要: 第 27.12.20.1 节,“等待事件摘要表”
阶段事件摘要: 第 27.12.20.2 节,“阶段摘要表”
语句事件摘要: 第 27.12.20.3 节,“语句摘要表”
事务事件摘要: 第 27.12.20.5 节,“事务摘要表”
内存事件摘要: 第 27.12.20.10 节,“内存摘要表”
错误事件摘要: 第 27.12.20.11 节,“错误摘要表”
TRUNCATE TABLE
允许用于连接汇总表。它删除没有连接的帐户、主机或用户的行,并将剩余行的摘要列重置为零。此外,每个按帐户、主机、用户或线程聚合的汇总表都会被它所依赖的连接表的截断隐式截断。下表描述了连接表截断和隐式截断表之间的关系。
表 27.2 连接表截断的隐式影响
截断连接表 | 隐式截断的汇总表 |
---|---|
accounts |
名称包含_summary_by_account ,
_summary_by_thread |
hosts |
名称包含_summary_by_account ,
_summary_by_host ,
_summary_by_thread |
users |
名称包含_summary_by_account ,
_summary_by_user ,
_summary_by_thread |
截断_summary_global
汇总表也会隐式截断其对应的连接和线程汇总表。例如,截断
events_waits_summary_global_by_event_name
会隐式截断按帐户、主机、用户或线程聚合的等待事件摘要表。