当客户端连接到MySQL服务器时,它以特定的用户名和特定的主机进行连接。性能架构使用以下表提供有关这些连接的统计信息,并根据帐户(用户和主机组合)以及每个用户名和主机名分别跟踪它们:
accounts
:每个客户帐户的连接统计信息hosts
:每个客户端主机名的连接统计信息users
:每个客户端用户名的连接统计信息
连接表中“帐户”的含义类似于mysql
系统数据库中MySQL授权表中的含义,从某种意义上来说,该术语是指用户和主机值的组合。它们的区别在于,对于授权表,帐户的主机部分可以是模式,而对于性能架构表,主机值始终是特定的非模式主机名。
每个连接表都有CURRENT_CONNECTIONS
和TOTAL_CONNECTIONS
列,用于跟踪其统计信息所基于的每个“跟踪值”的当前和总数。这些表的不同之处在于它们用于跟踪值。该accounts
表具有USER
和HOST
列,用于跟踪每个用户和主机组合的连接。所述users
和hosts
表具有一个USER
和HOST
柱,分别,以跟踪每个用户名和主机名的连接。
性能架构还使用的行值USER
和的HOST
列值,对内部线程和未通过身份验证的用户会话的线程进行计数NULL
。
假设客户端命名为,user1
并且user2
每个客户端从hosta
和连接一次hostb
。性能架构跟踪连接,如下所示:
- 该
accounts
表有四行,分别用于user1
/hosta
,user1
/hostb
,user2
/hosta
和user2
/hostb
帐户值,每一行计算每个帐户一个连接。 - 该
hosts
表有两行,分别是forhosta
和hostb
,每行计算每个主机名两个连接。 - 该
users
表有两行,分别是foruser1
和user2
,每行每个用户名计算两个连接。
客户端连接时,性能模式将使用适合每个表的跟踪值来确定每个连接表中的哪一行适用。如果没有这样的行,则添加一行。然后,性能架构将在该行中的CURRENT_CONNECTIONS
和TOTAL_CONNECTIONS
列中增加一。
当客户端断开连接时,性能模式CURRENT_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 | +------------------------------------------------------ +
有关各个连接摘要表的详细信息,请参阅描述表中有关摘要事件类型的部分:
- 等待事件摘要:“等待事件摘要表”
- 舞台事件摘要:“舞台摘要表”
- 语句事件摘要:“语句摘要表”
- 事务事件摘要:“事务摘要表”
- 内存事件摘要:“内存摘要表”
- 错误事件摘要:“错误摘要表”
TRUNCATE TABLE
允许用于连接摘要表。它将删除没有连接的帐户,主机或用户的行,并将其余行的摘要列重置为零。此外,由帐户,主机,用户或线程聚合的每个汇总表都将被其依赖的连接表截断而被隐式截断。下表描述了连接表截断表和隐式截断表之间的关系。
连接表截断的隐式影响
截断的连接表 | 隐式截断的摘要表 |
---|---|
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
隐式截断由帐户,主机,用户或线程聚合的等待事件摘要表。