Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  Performance Schema Connection Tables

29.12.8 性能模式连接表

当客户端连接到MySQL服务器时,它会以特定的用户名和主机名进行连接。性能模式提供关于这些连接的统计信息,按账户(用户和主机组合)跟踪,以及分别按用户名和主机名单独跟踪,使用以下表格:

  • 账户: 按客户端账户的连接统计信息

  • 主机: 按客户端主机名的连接统计信息

  • 用户: 按客户端用户名的连接统计信息

在连接表中,“账户”一词的含义与MySQL授予权限表中的相同,指的是用户和主机值的组合。它们之间的区别在于,对于性能模式表格,主机值始终是一个具体的非模式主机名,而对于授予权限表,主机部分可以是模式。

每个连接表都有CURRENT_CONNECTIONSTOTAL_ CONNECTIONS列来跟踪基于其统计信息的当前和总连接数。表格之间在使用跟踪值方面有所不同。账户表使用USERHOST列来跟踪每个用户和主机组合的连接。用户主机表分别使用USERHOST列来跟踪每个用户名和主机名的连接。

性能模式还计算内部线程以及用户会话未能认证时的线程数,使用USERHOST列值为NULL的行。

假设客户端user1user2各自从主机hostahostb连接一次。性能模式将连接跟踪如下:

  • 账户表有四行,分别为user1/hostauser1/hostbuser2/hostauser2/hostb的账户值,每行计数一次连接。

  • 主机表有两行,分别为hostahostb,每行计数两次连接。

  • 用户表也有两行,分别为user1user2,每行计数两次连接。

当客户端连接时,性能模式会确定哪个行在每个连接表中适用,使用适合各自表的跟踪值。如果没有这样的行,一行将被添加。然后性能模式将CURRENT_ CONNECTIONSTOTAL_ CONNECTIONS列中的一个增加到该行。

当客户端断开连接时,性能模式会减少CURRENT_ CONNECTIONS列中的一个,并且将TOTAL_ CONNECTIONS列保持不变。

TRUNCATE TABLE 对于连接表是允许的。它具有以下效果:

  • 移除没有当前连接的帐户、主机或用户的行(即 CURRENT_CONNECTIONS = 0 的行)。

  • 未被移除的行将重置为仅计算当前连接:对于 CURRENT_CONNECTIONS > 0 的行,TOTAL_CONNECTIONS 将被重置为 CURRENT_CONNECTIONS

  • 依赖于连接表的总结表将会隐式地被截断,如后续部分所述。

性能_schema 维护了一个聚合连接统计信息的总结表,它们根据帐户、主机或用户进行分类。这些表名中包含 _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 对于连接总结表是允许的。它移除没有连接的帐户、主机或用户的行,并将剩余行的总结列重置为零。此外,每个依赖于连接表的总结表在被截断时都会隐式地被截断。以下表格描述了连接表截断对隐式截断表的影响关系。

表 29.2 Implicit Effects of Connection Table Truncation

Truncated Connection Table Implicitly Truncated Summary Tables
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 隐式地截断了根据帐户、主机、用户或线程聚合的等待事件总结表。