文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  Performance Schema 連線屬性表

29.12.9 Performance Schema 連線屬性表

連線屬性是應用程式在連線時可以傳遞給伺服器的鍵值組。對於基於 libmysqlclient 用戶端程式庫實作的 C API 的應用程式,mysql_options()mysql_options4() 函式定義連線屬性集。其他 MySQL 連接器可能會提供自己的屬性定義方法。

這些 Performance Schema 表格會公開屬性資訊

此外,寫入稽核日誌的連線事件可能包含連線屬性。請參閱第 8.4.5.4 節「稽核日誌檔案格式」

開頭為底線 (_) 的屬性名稱保留供內部使用,不應由應用程式建立。此慣例允許 MySQL 引入新屬性,而不會與應用程式屬性衝突,並讓應用程式定義自己的屬性,而不會與內部屬性衝突。

可用的連線屬性

在給定連線中可見的連線屬性集會因您的平台、用於建立連線的 MySQL 連接器或用戶端程式等因素而有所不同。

libmysqlclient 用戶端程式庫會設定這些屬性

  • _client_name:用戶端名稱(用戶端程式庫的 libmysql)。

  • _client_version:用戶端程式庫版本。

  • _os:作業系統(例如,LinuxWin64)。

  • _pid:用戶端程序 ID。

  • _platform:機器平台(例如,x86_64)。

  • _thread:用戶端執行緒 ID(僅限 Windows)。

其他 MySQL 連接器可能會定義它們自己的連線屬性。

MySQL Connector/C++ 為使用 X DevAPI 或 X DevAPI for C 的應用程式定義了這些屬性

  • _client_license:連接器授權(例如,GPL-2.0)。

  • _client_name:連接器名稱 (mysql-connector-cpp)。

  • _client_version:連接器版本。

  • _os:作業系統(例如,LinuxWin64)。

  • _pid:用戶端程序 ID。

  • _platform:機器平台(例如,x86_64)。

  • _source_host:執行用戶端機器的的主機名稱。

  • _thread:用戶端執行緒 ID(僅限 Windows)。

MySQL Connector/J 定義了這些屬性

  • _client_name:用戶端名稱

  • _client_version:用戶端程式庫版本

  • _os:作業系統(例如,LinuxWin64

  • _client_license:連接器授權類型

  • _platform:機器平台(例如,x86_64

  • _runtime_vendor:Java 執行環境 (JRE) 供應商

  • _runtime_version:Java 執行環境 (JRE) 版本

MySQL Connector/NET 定義了這些屬性

  • _client_version:用戶端程式庫版本。

  • _os:作業系統(例如,LinuxWin64)。

  • _pid:用戶端程序 ID。

  • _platform:機器平台(例如,x86_64)。

  • _program_name:用戶端名稱。

  • _thread:用戶端執行緒 ID(僅限 Windows)。

Connector/Python 實作定義了這些屬性;某些值和屬性取決於 Connector/Python 的實作(純 Python 或 c-ext)

  • _client_license:連接器的授權類型;GPL-2.0Commercial。(僅限純 Python)

  • _client_name:設定為 mysql-connector-python (純 Python) 或 libmysql (c-ext)

  • _client_version:連接器版本 (純 Python) 或 mysqlclient 程式庫版本 (c-ext)。

  • _os:執行連接器的作業系統(例如,LinuxWin64)。

  • _pid:來源機器上的程序識別碼(例如,26955

  • _platform:機器平台(例如,x86_64)。

  • _source_host:連接器正在從其連線的機器的的主機名稱。

  • _connector_version:連接器版本(例如,9.0.0)(僅限 c-ext)。

  • _connector_license:連接器的授權類型;GPL-2.0Commercial(僅限 c-ext)。

  • _connector_name:一律設定為 mysql-connector-python(僅限 c-ext)。

PHP 定義的屬性取決於其編譯方式

  • 使用 libmysqlclient 編譯:先前描述的標準 libmysqlclient 屬性。

  • 使用 mysqlnd 編譯:只有 _client_name 屬性,值為 mysqlnd

許多 MySQL 用戶端程式會設定一個 program_name 屬性,其值等於用戶端名稱。例如,mysqladminmysqldump 分別將 program_name 設定為 mysqladminmysqldump。MySQL Shell 將 program_name 設定為 mysqlsh

某些 MySQL 用戶端程式會定義其他屬性

  • mysql:

    • os_user:執行程式的作業系統使用者名稱。在 Unix 和類似 Unix 的系統以及 Windows 上可用。

    • os_sudouserSUDO_USER 環境變數的值。在 Unix 和類似 Unix 的系統上可用。

    mysql 連線屬性,如果值為空,則不會傳送。

  • mysqlbinlog:

    • _client_rolebinary_log_listener

  • 複本連線

    • program_namemysqld

    • _client_rolebinary_log_listener

    • _client_replication_channel_name:通道名稱。

  • FEDERATED 儲存引擎連線

    • program_namemysqld

    • _client_rolefederated_storage

連線屬性限制

從用戶端傳輸到伺服器的連線屬性資料量有限制

  • 用戶端在連線之前強制執行的固定限制。

  • 伺服器在連線時強制執行的固定限制。

  • 效能綱要 (Performance Schema) 在連線時強制執行的可設定限制。

對於使用 C API 啟動的連線,libmysqlclient 程式庫對用戶端連線屬性資料的總大小施加 64KB 的限制:呼叫 mysql_options() 導致超出此限制會產生 CR_INVALID_PARAMETER_NO 錯誤。其他 MySQL 連接器可能會對可以傳輸到伺服器的連線屬性資料量施加它們自己的用戶端限制。

在伺服器端,會發生這些連線屬性資料的大小檢查

  • 伺服器對其接受的連線屬性資料的總大小施加 64KB 的限制。如果用戶端嘗試傳送超過 64KB 的屬性資料,伺服器會拒絕連線。否則,伺服器會將屬性緩衝區視為有效,並在 Performance_schema_session_connect_attrs_longest_seen 狀態變數中追蹤最長此類緩衝區的大小。

  • 對於接受的連線,效能綱要會針對 performance_schema_session_connect_attrs_size 系統變數的值檢查彙總屬性大小。如果屬性大小超過此值,則會執行以下動作

    • 效能綱要會截斷屬性資料,並遞增 Performance_schema_session_connect_attrs_lost 狀態變數,該變數會指出發生屬性截斷的連線數。

    • 如果 log_error_verbosity 系統變數大於 1,效能綱要會將訊息寫入錯誤記錄檔

      Connection attributes of length N were truncated
      (N bytes lost)
      for connection N, user user_name@host_name
      (as user_name), auth: {yes|no}

      警告訊息中的資訊旨在幫助 DBA 識別發生屬性截斷的用戶端。

    • 如果屬性緩衝區有足夠的空間,則會將一個 _truncated 屬性新增至工作階段屬性,其值指出遺失了多少位元組。這使效能綱要能夠在連線屬性表格中公開每個連線的截斷資訊。可以檢查此資訊,而無需檢查錯誤記錄檔。