10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 本手册下载 本手册节选

27.12.9性能模式连接属性表

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

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

此外,写入审计日志的连接事件可能包含连接属性。看到第6.4.5.4节“审计日志文件格式”

以下划线(_)只供内部使用,不应由应用程序创建。这种约定允许MySQL引入新属性而不与应用程序的属性发生冲突,并允许应用程序定义它们自己的属性而不与内部属性发生冲突。

可用连接Atrributes

给定连接中可见的连接属性集取决于各种因素,如您的平台、用于建立连接的MySQL连接器或客户端程序。

libmysqlclient客户端库设置这些属性:

  • _client_name:客户端名称(libmysql对于客户端库)。

  • _client_version:客户端库版本。

  • _os:操作系统(例如:LinuxWin64).

  • _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:操作系统(例如:LinuxWin64).

  • _pid:客户端进程ID。

  • _platform:机器平台(例如:x86_64).

  • _source_host:客户端正在运行的机器的主机名。

  • _thread:客户端线程ID(仅限Windows)。

MySQL Connector/J定义了这些属性:

  • _client_name:客户端名称

  • _client_version:客户端库版本

  • _os:操作系统(例如:LinuxWin64

  • _client_license:连接器license类型

  • _platform:机器平台(例如:x86_64

  • _runtime_vendor: JRE (Java runtime environment)供应商

  • _runtime_version: JRE版本号

MySQL Connector/NET定义了这些属性:

  • _client_version:客户端库版本。

  • _os:操作系统(例如:LinuxWin64).

  • _pid:客户端进程ID。

  • _platform:机器平台(例如:x86_64).

  • _program_name:客户端名称。

  • _thread:客户端线程ID(仅限Windows)。

PHP根据编译方式定义属性:

  • 编译使用libmysqlclient:标准libmysqlclient属性,前面描述的。

  • 编译使用mysqlnd:只有_client_name属性,其值为mysqlnd

许多MySQL客户端程序设置program_name属性的值等于客户端名称。例如,mysqladmin而且, mysqldumpprogram_namemysqladmin而且, mysqldump,分别。MySQL壳牌集program_namemysqlsh

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

  • mysql(MySQL 8.0.17):

    • os_user:运行程序的操作系统用户名。可在Unix和类Unix系统和Windows上使用。

    • os_sudouser:对象的值SUDO_USER环境变量。在Unix和类Unix系统上可用。

    mysql不发送值为空的连接属性。

  • mysqlbinlog

    • _client_rolebinary_log_listener

  • 复制连接:

    • program_namemysqld

    • _client_rolebinary_log_listener

    • _client_replication_channel_name:通道名称。

  • 联邦存储引擎连接:

    • program_namemysqld

    • _client_rolefederated_storage

连接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属性被添加到会话属性,如果属性缓冲区有足够的空间,则该属性的值指示丢失了多少字节。这使性能模式能够在连接属性表中公开每个连接的截断信息。可以在不检查错误日志的情况下检查此信息。