连接属性是应用程序在连接时可以传递给服务器的键-值对。对于基于C API实现的应用程序libmysqlclient
客户端库,mysql_options ()
而且mysql_options4 ()
函数定义连接属性集。其他MySQL连接器可能提供它们自己的属性定义方法。
这些性能模式表公开了属性信息:
session_account_connect_attrs
:当前会话的连接属性,以及与会话帐户关联的其他会话的连接属性session_connect_attrs
:所有会话的连接属性
此外,写入审计日志的连接事件可能包含连接属性。看到第6.4.5.4节“审计日志文件格式”.
以下划线(_
)只供内部使用,不应由应用程序创建。这种约定允许MySQL引入新属性而不与应用程序的属性发生冲突,并允许应用程序定义它们自己的属性而不与内部属性发生冲突。
可用连接Atrributes
给定连接中可见的连接属性集取决于各种因素,如您的平台、用于建立连接的MySQL连接器或客户端程序。
的libmysqlclient
客户端库设置这些属性:
_client_name
:客户端名称(libmysql
对于客户端库)。_client_version
:客户端库版本。_os
:操作系统(例如:Linux
,Win64
)._pid
:客户端进程ID。_platform
:机器平台(例如:x86_64
)._thread
:客户端线程ID(仅限Windows)。
其他MySQL连接器可以定义自己的连接属性。
MySQL Connector/ c++ 8.0.16及更高版本为使用X DevAPI或X DevAPI for C的应用程序定义了这些属性:
_client_license
:连接器许可证(例如gpl - 2.0
)._client_name
:连接器名称(mysql-connector-cpp
)._client_version
:连接器版本。_os
:操作系统(例如:Linux
,Win64
)._pid
:客户端进程ID。_platform
:机器平台(例如:x86_64
)._source_host
:客户端正在运行的机器的主机名。_thread
:客户端线程ID(仅限Windows)。
_client_name
:客户端名称_client_version
:客户端库版本_os
:操作系统(例如:Linux
,Win64
)_client_license
:连接器license类型_platform
:机器平台(例如:x86_64
)_runtime_vendor
: JRE (Java runtime environment)供应商_runtime_version
: JRE版本号
MySQL Connector/NET定义了这些属性:
_client_version
:客户端库版本。_os
:操作系统(例如:Linux
,Win64
)._pid
:客户端进程ID。_platform
:机器平台(例如:x86_64
)._program_name
:客户端名称。_thread
:客户端线程ID(仅限Windows)。
PHP根据编译方式定义属性:
编译使用
libmysqlclient
:标准libmysqlclient
属性,前面描述的。编译使用
mysqlnd
:只有_client_name
属性,其值为mysqlnd
.
许多MySQL客户端程序设置program_name
属性的值等于客户端名称。例如,mysqladmin而且, mysqldump集program_name
来mysqladmin
而且, mysqldump
,分别。MySQL壳牌集program_name
来mysqlsh
.
一些MySQL客户端程序定义了附加属性:
连接Atrribute限制
从客户端传输到服务器的连接属性数据量有限制:
客户端在连接时间之前施加的固定限制。
服务器在连接时施加的固定限制。
由性能模式在连接时施加的可配置限制。
对于使用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时:连接长度属性N截断(N字节丢失)用于连接N、用户user_name@host_name(如user_name),身份验证:{|否}
警告消息中的信息旨在帮助dba识别发生了哪个属性截断的客户机。
一个
_truncated
属性被添加到会话属性,如果属性缓冲区有足够的空间,则该属性的值指示丢失了多少字节。这使性能模式能够在连接属性表中公开每个连接的截断信息。可以在不检查错误日志的情况下检查此信息。