Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  Performance Schema Connection Attribute Tables

29.12.9 性能模式连接属性表

连接属性是应用程序可以在连接时传递给服务器的键值对。对于基于 C API 实现的应用程序,例如使用 libmysqlclient 客户端库的应用程序,mysql_options()mysql_options4() 函数定义连接属性集。其他 MySQL 连接器可能提供自己的属性定义方法。

这些性能模式表公开了属性信息:

此外,审核日志中的连接事件可能包括连接属性。请参阅 第 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: 连接器版本(例如,8.3.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_namemysqladminmysqldump,分别。MySQL Shell 设置 program_namemysqlsh

一些 MySQL 客户端程序定义了附加属性:

  • mysql

    • os_user: 操作系统用户名称。可在 Unix 和 Unix-like 系统和 Windows 上使用。

    • os_sudouser: SUDO_USER 环境变量的值。可在 Unix 和 Unix-like 系统上使用。

    mysql 连接属性为空时,不会发送。

  • mysqlbinlog

    • _client_role: binary_log_listener

  • 副本连接:

    • program_name: mysqld

    • _client_role: binary_log_listener

    • _client_replication_channel_name: 通道名称。

  • FEDERATED 存储引擎连接:

    • 程序名称: 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 属性到会话属性中,指示截断的字节数。这使性能模式能够在连接属性表中公开每个连接的截断信息,而不需要检查错误日志。