文档首页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


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

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

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

性能模式维护汇总表,这些表按账户、主机或用户汇总各种事件类型的连接统计信息。这些表的名称中包含 _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 连接表截断的隐式影响

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