SESSION_CONNECT_ATTRS
SESSION_CONNECT_ATTRS 表提供了关于连接属性的信息。会话属性是客户端在建立连接时发送的键值对。
常见属性:
你可以通过以下方式查看 SESSION_CONNECT_ATTRS 表的列信息:
USE performance_schema;
DESCRIBE session_connect_attrs;
+------------------+-----------------+------+------+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------+-----------------+------+------+---------+-------+
| PROCESSLIST_ID | bigint unsigned | NO | | NULL | |
| ATTR_NAME | varchar(32) | NO | | NULL | |
| ATTR_VALUE | varchar(1024) | YES | | NULL | |
| ORDINAL_POSITION | int | YES | | NULL | |
+------------------+-----------------+------+------+---------+-------+
你可以通过以下方式查看存储在 SESSION_CONNECT_ATTRS 表中的会话属性信息:
USE performance_schema;
TABLE SESSION_CONNECT_ATTRS;
+----------------+-----------------+------------+------------------+
| PROCESSLIST_ID | ATTR_NAME | ATTR_VALUE | ORDINAL_POSITION |
+----------------+-----------------+------------+------------------+
| 2097154 | _client_name | libmysql | 0 |
| 2097154 | _client_version | 8.5.4 | 1 |
| 2097154 | _os | Linux | 2 |
| 2097154 | _pid | 1299203 | 3 |
| 2097154 | _platform | x86_64 | 4 |
| 2097154 | program_name | mysqlsh | 5 |
+----------------+-----------------+------------+------------------+
SESSION_CONNECT_ATTRS 表中的字段说明如下:
PROCESSLIST_ID:会话的 Processlist ID。ATTR_NAME:属性名称。ATTR_VALUE:属性值。ORDINAL_POSITION:名称/值对的顺序位置。
大小限制与截断
TiDB 使用全局系统变量 performance_schema_session_connect_attrs_size 来控制每个会话的连接属性总大小上限。
- 默认值:
4096字节 - 取值范围:
[-1, 65536] -1表示未配置限制,TiDB 会将其视为最大65536字节。0表示 TiDB 不保留客户端提供的会话连接属性,这实际上会禁用会话属性记录。
当总大小超过此限制时,TiDB 会截断超出的属性,并添加 _truncated 以指示被截断的字节数。
已接受的连接属性也会写入慢日志中的 Session_connect_attrs 字段,并且可以从 INFORMATION_SCHEMA.SLOW_QUERY 和 INFORMATION_SCHEMA.CLUSTER_SLOW_QUERY 中查询。要控制写入慢日志的负载大小,请调整 performance_schema_session_connect_attrs_size。
TiDB 还会对握手包中的连接属性负载强制实施 1 MiB 的硬限制。如果超过此硬限制,连接将被拒绝。