25.12.9 性能架构连接属性 table
连接属性是键值对,应用程序可以在连接时将它们传递给服务器。对于基于libmysqlclient
Client 端库实现的 C API 的应用程序,mysql_options()和mysql_options4()函数定义连接属性集。其他 MySQL 连接器可以提供自己的属性定义方法。
这些性能模式 table 公开了属性信息:
-
session_account_connect_attrs:当前会话以及与该会话帐户关联的其他会话的连接属性
-
session_connect_attrs:所有会话的连接属性
以下划线(_
)开头的属性名称仅供内部使用,不应由应用程序创建。该约定允许 MySQL 引入新属性而不会与应用程序属性发生冲突,并使应用程序能够定义自己的与内部属性不发生冲突的属性。
可用的连接属性
给定 Connecting 可见的连接属性集取决于各种因素,例如您的平台,用于构建连接的 MySQL Connector 或 Client 端程序。
libmysqlclient
Client 端库设置以下属性:
-
_client_name
:Client 端名称(Client 端库为libmysql
)。 -
_client_version
:Client 端库版本。 -
_os
:os(例如Linux
,Win64
)。 -
_pid
:Client 端进程 ID。 -
_platform
:机器平台(例如x86_64
)。 -
_thread
:Client 端线程 ID(仅 Windows)。
其他 MySQL 连接器可以定义自己的连接属性。
MySQL Connector/J 定义了以下属性:
-
_client_license
:连接器许可证类型。 -
_runtime_vendor
:Java 运行时环境(JRE)供应商。 -
_runtime_version
:Java 运行时环境(JRE)版本。
MySQL Connector/NET 定义了以下属性:
-
_client_version
:Client 端库版本。 -
_os
:os(例如Linux
,Win64
)。 -
_pid
:Client 端进程 ID。 -
_platform
:机器平台(例如x86_64
)。 -
_program_name
:Client 名称。 -
_thread
:Client 端线程 ID(仅 Windows)。
PHP 定义了取决于其编译方式的属性:
-
使用
libmysqlclient
编译:标准libmysqlclient
属性,如前所述。 -
使用
mysqlnd
编译:仅_client_name
属性,值为mysqlnd
。
许多 MySQLClient 端程序将program_name
属性设置为等于 Client 端名称的值。例如,mysqladmin和mysqldump分别将program_name
设置为mysqladmin
和mysqldump
。
一些 MySQLClient 端程序定义了其他属性:
-
_client_role
:binary_log_listener
-
Replica connections:
-
program_name
:mysqld
-
_client_role
:binary_log_listener
-
_client_replication_channel_name
:Channels 名称。
-
-
FEDERATED存储引擎连接:
-
program_name
:mysqld
_client_role
:federated_storage
连接属性限制
从 Client 端传输到服务器的连接属性数据的数量受到限制:
-
Client 端在连接时间之前施加的固定限制。
-
服务器在连接时施加的固定限制。
-
性能模式在连接时施加的可配置限制。
对于使用 C API 启动的连接,libmysqlclient
库在 Client 端的连接属性数据的总大小上施加了 64KB 的限制:导致超出此限制的mysql_options()调用将产生CR_INVALID_PARAMETER_NO错误。其他 MySQL 连接器可能会对可以将多少连接属性数据传输到服务器施加自己的 Client 端限制。
在服务器端,将对连接属性数据进行以下大小检查:
-
服务器将接受的连接属性数据的总大小限制为 64KB。如果 Client 端尝试发送超过 64KB 的属性数据,则服务器将拒绝连接。
-
对于可接受的连接,性能架构将根据performance_schema_session_connect_attrs_size系统变量的值检查聚合属性的大小。如果属性大小超过此值,则会发生以下操作:
-
性能架构将截断属性数据并增加Performance_schema_session_connect_attrs_lost状态变量,该变量 table 示发生属性截断的连接数。
- 如果log_error_verbosity系统变量大于 1,则性能架构会将消息写入错误日志。
[Warning] Connection attributes of length N were truncated