文档首页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  性能模式连接表

29.12.8 性能模式连接表

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

  • accounts:每个客户端帐户的连接统计信息

  • hosts:每个客户端主机名的连接统计信息

  • users:每个客户端用户名的连接统计信息

连接表中“帐户”的含义与mysql系统数据库的 MySQL 授权表中的含义类似,因为该术语指的是用户和主机值的组合。 它们的不同之处在于,对于授权表,帐户的主机部分可以是模式,而对于性能模式表,主机值始终是特定的非模式主机名。

每个连接表都有CURRENT_CONNECTIONSTOTAL_CONNECTIONS列,用于跟踪其统计信息所基于的每个“跟踪值”的当前和总连接数。 这些表的不同之处在于它们使用的跟踪值。 accounts表具有USERHOST列,用于跟踪每个用户和主机组合的连接。 usershosts表分别具有USERHOST列,用于跟踪每个用户名和主机名的连接。

性能模式还使用USERHOST列值为NULL的行来统计内部线程和身份验证失败的用户会话的线程。

假设名为user1user2的客户端分别从hostahostb连接一次。 性能模式按如下方式跟踪连接:

  • accounts表有四行,分别对应user1/hostauser1/hostbuser2/hostauser2/hostb帐户值,每行统计每个帐户的一个连接。

  • hosts表有两行,分别对应hostahostb,每行统计每个主机名的两个连接。

  • users表有两行,分别对应user1user2,每行统计每个用户名的两个连接。

当客户端连接时,性能模式会使用适用于每个表的跟踪值来确定每个连接表中的哪一行适用。 如果没有这样的行,则添加一行。 然后,性能模式会将该行中的CURRENT_CONNECTIONSTOTAL_CONNECTIONS列递增 1。

当客户端断开连接时,性能模式会将该行中的CURRENT_CONNECTIONS列递减 1,并保持TOTAL_CONNECTIONS列不变。

连接表允许使用TRUNCATE TABLE。 它有以下影响:

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

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

  • 依赖于连接表的汇总表将被隐式截断,如本节稍后所述。

Performance 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 连接表截断的隐式影响

被截断的连接表 隐式截断的汇总表
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 会隐式截断按账户、主机、用户或线程汇总的等待事件汇总表。