文档主页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (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_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 属性添加到会话属性中,其值为丢失的字节数。这使性能模式能够在连接属性表中公开每个连接的截断信息。可以检查此信息,而不必查看错误日志。