文件首頁
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 參考手冊  /  ...  /  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 擴充)

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

  • _client_name: 設定為 mysql-connector-python(純 Python)或 libmysql(C 擴充)

  • _client_version: 連接器版本(純 Python)或 mysqlclient 函式庫版本(C 擴充)。

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

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

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

  • _source_host: 連接器從哪個機器連線的主機名稱。

  • _connector_version: 連接器版本(例如,8.4.0)(僅限 C 擴充)。

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

  • _connector_name: 始終設定為 mysql-connector-python(僅限 C 擴充)。

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_sudouser: SUDO_USER 環境變數的值。適用於 Unix 和類 Unix 系統。

    mysql 連線屬性中值為空的不會傳送。

  • mysqlbinlog:

    • _client_role: binary_log_listener

  • 副本連線

    • program_name: mysqld

    • _client_role: binary_log_listener

    • _client_replication_channel_name: 管道名稱。

  • FEDERATED 儲存引擎連線

    • program_name: mysqld

    • _client_role: federated_storage

連線屬性限制

從客戶端傳送到伺服器的連線屬性資料量有上限

  • 客戶端在連線前設定的固定限制。

  • 伺服器在連線時設定的固定限制。

  • 效能架構在連線時設定的可設定限制。

對於使用 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 屬性,其值表示遺失了多少位元組。這使效能架構能夠在連線屬性表中公開每個連線的截斷資訊。可以檢查此資訊,而無需檢查錯誤日誌。