文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  效能架構連線表格

29.12.8 效能架構連線表格

當用戶端連線到 MySQL 伺服器時,它會使用特定使用者名稱並從特定主機連線。效能架構提供有關這些連線的統計資訊,追蹤每個帳戶(使用者和主機組合)以及每個使用者名稱和主機名稱的連線,使用這些表格

  • accounts:每個用戶端帳戶的連線統計資訊

  • hosts:每個用戶端主機名稱的連線統計資訊

  • users:每個用戶端使用者名稱的連線統計資訊

連線表格中「帳戶」的含義與 mysql 系統資料庫中 MySQL 授權表格中的含義類似,因為該術語是指使用者和主機值的組合。它們的不同之處在於,對於授權表格,帳戶的主機部分可以是模式,而對於效能架構表格,主機值始終是特定的非模式主機名稱。

每個連線表格都有 CURRENT_CONNECTIONSTOTAL_CONNECTIONS 欄位,用來追蹤每個「追蹤值」上的目前和總連線數,其統計資料即以此為基礎。表格之間的差異在於它們用於追蹤值的內容。accounts 表格有 USERHOST 欄位,用於追蹤每個使用者和主機組合的連線數。usershosts 表格分別有 USERHOST 欄位,用於追蹤每個使用者名稱和主機名稱的連線數。

Performance Schema 還會計算內部執行緒和驗證失敗的使用者工作階段的執行緒,這些列的 USERHOST 欄位值為 NULL

假設名為 user1user2 的用戶端各自從 hostahostb 連線一次。Performance Schema 會追蹤連線如下:

  • accounts 表格有四列,分別對應 user1/hostauser1/hostbuser2/hostauser2/hostb 帳戶值,每列計算每個帳戶的一個連線。

  • hosts 表格有兩列,分別對應 hostahostb,每列計算每個主機名稱的兩個連線。

  • users 表格有兩列,分別對應 user1user2,每列計算每個使用者名稱的兩個連線。

當用戶端連線時,Performance Schema 會使用適用於每個表格的追蹤值,來判斷每個連線表格中適用的列。如果沒有這樣的列,則會新增一列。然後,Performance Schema 會將該列中的 CURRENT_CONNECTIONSTOTAL_CONNECTIONS 欄位遞增一。

當用戶端中斷連線時,Performance Schema 會將該列中的 CURRENT_CONNECTIONS 欄位遞減一,並保持 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 會隱含地截斷依帳戶、主機、使用者或執行緒彙總的等待事件摘要表格。