- 系统变量
- 变量参考
- allow_auto_random_explicit_insert 从 v4.0.3 版本开始引入
- authentication_ldap_sasl_auth_method_name 从 v7.1.0 版本开始引入
- authentication_ldap_sasl_bind_base_dn 从 v7.1.0 版本开始引入
- authentication_ldap_sasl_bind_root_dn 从 v7.1.0 版本开始引入
- authentication_ldap_sasl_bind_root_pwd 从 v7.1.0 版本开始引入
- authentication_ldap_sasl_ca_path 从 v7.1.0 版本开始引入
- authentication_ldap_sasl_init_pool_size 从 v7.1.0 版本开始引入
- authentication_ldap_sasl_max_pool_size 从 v7.1.0 版本开始引入
- authentication_ldap_sasl_server_host 从 v7.1.0 版本开始引入
- authentication_ldap_sasl_server_port 从 v7.1.0 版本开始引入
- authentication_ldap_sasl_tls 从 v7.1.0 版本开始引入
- authentication_ldap_simple_auth_method_name 从 v7.1.0 版本开始引入
- authentication_ldap_simple_bind_base_dn 从 v7.1.0 版本开始引入
- authentication_ldap_simple_bind_root_dn 从 v7.1.0 版本开始引入
- authentication_ldap_simple_bind_root_pwd 从 v7.1.0 版本开始引入
- authentication_ldap_simple_ca_path 从 v7.1.0 版本开始引入
- authentication_ldap_simple_init_pool_size 从 v7.1.0 版本开始引入
- authentication_ldap_simple_max_pool_size 从 v7.1.0 版本开始引入
- authentication_ldap_simple_server_host 从 v7.1.0 版本开始引入
- authentication_ldap_simple_server_port 从 v7.1.0 版本开始引入
- authentication_ldap_simple_tls 从 v7.1.0 版本开始引入
- auto_increment_increment
- auto_increment_offset
- autocommit
- block_encryption_mode
- character_set_client
- character_set_connection
- character_set_database
- character_set_results
- character_set_server
- collation_connection
- collation_database
- collation_server
- cte_max_recursion_depth
- datadir
- ddl_slow_threshold
- default_authentication_plugin
- default_password_lifetime 从 v6.5.0 版本开始引入
- default_week_format
- disconnect_on_expired_password 从 v6.5.0 版本开始引入
- error_count
- foreign_key_checks
- group_concat_max_len
- have_openssl
- have_ssl
- hostname
- identity 从 v5.3.0 版本开始引入
- init_connect
- innodb_lock_wait_timeout
- interactive_timeout
- last_insert_id 从 v5.3.0 版本开始引入
- last_plan_from_binding 从 v4.0 版本开始引入
- last_plan_from_cache 从 v4.0 版本开始引入
- last_sql_use_alloc 从 v6.4.0 版本开始引入
- license
- log_bin
- max_connections
- max_execution_time
- max_prepared_stmt_count
- max_allowed_packet 从 v6.1.0 版本开始引入
- mpp_exchange_compression_mode 从 v6.6.0 版本开始引入
- mpp_version 从 v6.6.0 版本开始引入
- password_history 从 v6.5.0 版本开始引入
- password_reuse_interval 从 v6.5.0 版本开始引入
- plugin_dir
- plugin_load
- port
- rand_seed1
- rand_seed2
- require_secure_transport 从 v6.1.0 版本开始引入
- skip_name_resolve 从 v5.2.0 版本开始引入
- socket
- sql_log_bin
- sql_mode
- sql_require_primary_key 从 v6.3.0 版本开始引入
- sql_select_limit 从 v4.0.2 版本开始引入
- ssl_ca
- ssl_cert
- ssl_key
- system_time_zone
- tidb_adaptive_closest_read_threshold 从 v6.3.0 版本开始引入
- tidb_allow_batch_cop 从 v4.0 版本开始引入
- tidb_allow_fallback_to_tikv 从 v5.0 版本开始引入
- tidb_allow_function_for_expression_index 从 v5.2.0 版本开始引入
- tidb_allow_mpp 从 v5.0 版本开始引入
- tidb_allow_remove_auto_inc 从 v2.1.18 和 v3.0.4 版本开始引入
- tidb_analyze_partition_concurrency
- tidb_analyze_version 从 v5.1.0 版本开始引入
- tidb_auto_analyze_end_time
- tidb_auto_analyze_partition_batch_size 从 v6.4.0 版本开始引入
- tidb_auto_analyze_ratio
- tidb_auto_analyze_start_time
- tidb_auto_build_stats_concurrency 从 v6.5.0 版本开始引入
- tidb_backoff_lock_fast
- tidb_backoff_weight
- tidb_batch_commit
- tidb_batch_delete
- tidb_batch_insert
- tidb_batch_pending_tiflash_count 从 v6.0 版本开始引入
- tidb_broadcast_join_threshold_count 从 v5.0 版本开始引入
- tidb_broadcast_join_threshold_size 从 v5.0 版本开始引入
- tidb_build_stats_concurrency
- tidb_capture_plan_baselines 从 v4.0 版本开始引入
- tidb_cdc_write_source 从 v6.5.0 版本开始引入
- tidb_check_mb4_value_in_utf8
- tidb_committer_concurrency 从 v6.1.0 版本开始引入
- tidb_checksum_table_concurrency
- tidb_config
- tidb_constraint_check_in_place
- tidb_constraint_check_in_place_pessimistic 从 v6.3.0 版本开始引入
- tidb_cost_model_version 从 v6.2.0 版本开始引入
- tidb_current_ts
- tidb_ddl_disk_quota 从 v6.3.0 版本开始引入
- tidb_ddl_enable_fast_reorg 从 v6.3.0 版本开始引入
- tidb_enable_dist_task 从 v7.1.0 版本开始引入
- tidb_ddl_error_count_limit
- tidb_ddl_flashback_concurrency 从 v6.3.0 版本开始引入
- tidb_ddl_reorg_batch_size
- tidb_ddl_reorg_priority
- tidb_ddl_reorg_worker_cnt
- tidb_default_string_match_selectivity 从 v6.2.0 版本开始引入
- tidb_disable_txn_auto_retry
- tidb_distsql_scan_concurrency
- tidb_dml_batch_size
- tidb_enable_1pc 从 v5.0 版本开始引入
- tidb_enable_analyze_snapshot 从 v6.2.0 版本开始引入
- tidb_enable_async_commit 从 v5.0 版本开始引入
- tidb_enable_auto_analyze 从 v6.1.0 版本开始引入
- tidb_enable_auto_increment_in_generated
- tidb_enable_batch_dml
- tidb_enable_cascades_planner
- tidb_enable_chunk_rpc 从 v4.0 版本开始引入
- tidb_enable_clustered_index 从 v5.0 版本开始引入
- tidb_enable_collect_execution_info
- tidb_enable_column_tracking 从 v5.4.0 版本开始引入
- tidb_enable_ddl 从 v6.3.0 版本开始引入
- tidb_enable_enhanced_security
- tidb_enable_external_ts_read 从 v6.4.0 版本开始引入
- tidb_external_ts 从 v6.4.0 版本开始引入
- tidb_restricted_read_only 从 v5.2.0 版本开始引入
- tidb_enable_exchange_partition
- tidb_enable_extended_stats
- tidb_enable_fast_analyze
- tidb_enable_foreign_key 从 v6.3.0 版本开始引入
- tidb_enable_gc_aware_memory_track
- tidb_enable_non_prepared_plan_cache
- 变量参考
系统变量
TiDB 系统变量的行为与 MySQL 相似,变量的作用范围可以是会话级别有效 (Session Scope) 或全局范围有效 (Global Scope)。其中:
- 对
SESSION作用域变量的更改,设置后只影响当前会话。 - 对
GLOBAL作用域变量的更改,设置后立即生效。如果该变量也有SESSION作用域,已经连接的所有会话 (包括当前会话) 将继续使用会话当前的SESSION变量值。 - 要设置变量值,可使用 SET 语句。
1. # 以下两个语句等价地改变一个 Session 变量
2. SET tidb_distsql_scan_concurrency = 10;
3. SET SESSION tidb_distsql_scan_concurrency = 10;
5. # 以下两个语句等价地改变一个 Global 变量
6. SET @@global.tidb_distsql_scan_concurrency = 10;
7. SET GLOBAL tidb_distsql_scan_concurrency = 10;

注意
部分 GLOBAL 作用域的变量会持久化到 TiDB 集群中。文档中的变量有一个“是否持久化到集群”的说明,可以为“是”或者“否”。
- 对于持久化到集群的变量,当该全局变量被修改后,会通知所有 TiDB 服务器刷新其系统变量缓存。在集群中增加一个新的 TiDB 服务器时,或者重启现存的 TiDB 服务器时,都将自动使用该持久化变量。
- 对于不持久化到集群的变量,对变量的修改只对当前连接的 TiDB 实例生效。如果需要保留设置过的值,需要在
tidb.toml配置文件中声明。
此外,由于应用和连接器通常需要读取 MySQL 变量,为了兼容这一需求,在 TiDB 中,部分 MySQL 的变量既可读取也可设置。例如,尽管 JDBC 连接器不依赖于查询缓存 (query cache) 的行为,但仍然可以读取和设置查询缓存。

注意
变量取较大值并不总会带来更好的性能。由于大部分变量对单个连接生效,设置变量时,还应考虑正在执行语句的并发连接数量。
确定安全值时,应考虑变量的单位:
- 如果单位为线程,安全值通常取决于 CPU 核的数量。
- 如果单位为字节,安全值通常小于系统内存的总量。
- 如果单位为时间,单位可能为秒或毫秒。
单位相同的多个变量可能会争夺同一组资源。
变量参考
allow_auto_random_explicit_insert 从 v4.0.3 版本开始引入
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 类型:布尔型
- 默认值:
OFF - 是否允许在
INSERT语句中显式指定含有AUTO_RANDOM属性的列的值。
authentication_ldap_sasl_auth_method_name 从 v7.1.0 版本开始引入
- 作用域:GLOBAL
- 是否持久化到集群:是
- 类型:枚举型
- 默认值:
SCRAM-SHA-1 - 可选值:
SCRAM-SHA-1、SCRAM-SHA-256、GSSAPI - LDAP SASL 身份验证中,验证方法的名称。
authentication_ldap_sasl_bind_base_dn 从 v7.1.0 版本开始引入
- 作用域:GLOBAL
- 是否持久化到集群:是
- 类型:字符串
- 默认值:””
- LDAP SASL 身份验证中,搜索用户的范围。如果创建用户时没有通过
AS ...指定dn,TiDB 会自动在 LDAP Server 的该范围中根据用户名搜索用户dn。例如dc=example,dc=org。
authentication_ldap_sasl_bind_root_dn 从 v7.1.0 版本开始引入
- 作用域:GLOBAL
- 是否持久化到集群:是
- 类型:字符串
- 默认值:””
- LDAP SASL 身份验证中,TiDB 登录 LDAP Server 搜索用户时使用的
dn。
authentication_ldap_sasl_bind_root_pwd 从 v7.1.0 版本开始引入
- 作用域:GLOBAL
- 是否持久化到集群:是
- 类型:字符串
- 默认值:””
- LDAP SASL 身份验证中,TiDB 登录 LDAP Server 搜索用户时使用的密码。
authentication_ldap_sasl_ca_path 从 v7.1.0 版本开始引入
- 作用域:GLOBAL
- 是否持久化到集群:是
- 类型:字符串
- 默认值:””
- LDAP SASL 身份验证中,TiDB 对 StartTLS 连接使用的 CA 证书的路径。
authentication_ldap_sasl_init_pool_size 从 v7.1.0 版本开始引入
- 作用域:GLOBAL
- 是否持久化到集群:是
- 类型:整数型
- 默认值:
10 - 范围:
[1, 32767] - LDAP SASL 身份验证中,TiDB 与 LDAP Server 间连接池的初始连接数。
authentication_ldap_sasl_max_pool_size 从 v7.1.0 版本开始引入
- 作用域:GLOBAL
- 是否持久化到集群:是
- 类型:整数型
- 默认值:
1000 - 范围:
[1, 32767] - LDAP SASL 身份验证中,TiDB 与 LDAP Server 间连接池的最大连接数。
authentication_ldap_sasl_server_host 从 v7.1.0 版本开始引入
- 作用域:GLOBAL
- 是否持久化到集群:是
- 类型:字符串
- 默认值:””
- LDAP SASL 身份验证中,LDAP Server 的主机名或地址。
authentication_ldap_sasl_server_port 从 v7.1.0 版本开始引入
- 作用域:GLOBAL
- 是否持久化到集群:是
- 类型:整数型
- 默认值:
389 - 范围:
[1, 65535] - LDAP SASL 身份验证中,LDAP Server 的 TCP/IP 端口号。
authentication_ldap_sasl_tls 从 v7.1.0 版本开始引入
- 作用域:GLOBAL
- 是否持久化到集群:是
- 类型:布尔型
- 默认值:
OFF - LDAP SASL 身份验证中,是否使用 StartTLS 对连接加密。
authentication_ldap_simple_auth_method_name 从 v7.1.0 版本开始引入
- 作用域:GLOBAL
- 是否持久化到集群:是
- 类型:枚举型
- 默认值:
SIMPLE - 可选值:
SIMPLE - LDAP simple 身份验证中,验证方法的名称。现在仅支持
SIMPLE。
authentication_ldap_simple_bind_base_dn 从 v7.1.0 版本开始引入
- 作用域:GLOBAL
- 是否持久化到集群:是
- 类型:字符串
- 默认值:””
- LDAP simple 身份验证中,搜索用户的范围。如果创建用户时没有通过
AS ...指定dn,TiDB 会自动在 LDAP Server 的该范围中根据用户名搜索用户dn。例如dc=example,dc=org。
authentication_ldap_simple_bind_root_dn 从 v7.1.0 版本开始引入
- 作用域:GLOBAL
- 是否持久化到集群:是
- 类型:字符串
- 默认值:””
- LDAP simple 身份验证中,TiDB 登录 LDAP Server 搜索用户时使用的
dn。
authentication_ldap_simple_bind_root_pwd 从 v7.1.0 版本开始引入
- 作用域:GLOBAL
- 是否持久化到集群:是
- 类型:字符串
- 默认值:””
- LDAP simple 身份验证中,TiDB 登录 LDAP Server 搜索用户时使用的密码。
authentication_ldap_simple_ca_path 从 v7.1.0 版本开始引入
- 作用域:GLOBAL
- 是否持久化到集群:是
- 类型:字符串
- 默认值:””
- LDAP simple 身份验证中,TiDB 对 StartTLS 连接使用的 CA 证书的路径。
authentication_ldap_simple_init_pool_size 从 v7.1.0 版本开始引入
- 作用域:GLOBAL
- 是否持久化到集群:是
- 类型:整数型
- 默认值:
10 - 范围:
[1, 32767] - LDAP simple 身份验证中,TiDB 与 LDAP Server 间连接池的初始连接数。
authentication_ldap_simple_max_pool_size 从 v7.1.0 版本开始引入
- 作用域:GLOBAL
- 是否持久化到集群:是
- 类型:整数型
- 默认值:
1000 - 范围:
[1, 32767] - LDAP simple 身份验证中,TiDB 与 LDAP Server 间连接池的最大连接数。
authentication_ldap_simple_server_host 从 v7.1.0 版本开始引入
- 作用域:GLOBAL
- 是否持久化到集群:是
- 类型:字符串
- 默认值:””
- LDAP simple 身份验证中,LDAP Server 的主机名或地址。
authentication_ldap_simple_server_port 从 v7.1.0 版本开始引入
- 作用域:GLOBAL
- 是否持久化到集群:是
- 类型:整数型
- 默认值:
389 - 范围:
[1, 65535] - LDAP simple 身份验证中,LDAP Server 的 TCP/IP 端口号。
authentication_ldap_simple_tls 从 v7.1.0 版本开始引入
- 作用域:GLOBAL
- 是否持久化到集群:是
- 类型:布尔型
- 默认值:
OFF - LDAP simple 身份验证中,是否使用 StartTLS 对连接加密。
auto_increment_increment
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 类型:整数型
- 默认值:
1 - 范围:
[1, 65535] - 控制
AUTO_INCREMENT自增值字段的自增步长。该变量常与auto_increment_offset一起使用。
auto_increment_offset
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 类型:整数型
- 默认值:
1 - 范围:
[1, 65535] - 控制
AUTO_INCREMENT自增值字段的初始值。该变量常与auto_increment_increment一起使用。示例如下:
1. mysql> CREATE TABLE t1 (a int not null primary key auto_increment);
2. Query OK, 0 rows affected (0.10 sec)
4. mysql> set auto_increment_offset=1;
5. Query OK, 0 rows affected (0.00 sec)
7. mysql> set auto_increment_increment=3;
8. Query OK, 0 rows affected (0.00 sec)
10. mysql> INSERT INTO t1 VALUES (),(),(),();
11. Query OK, 4 rows affected (0.04 sec)
12. Records: 4 Duplicates: 0 Warnings: 0
14. mysql> SELECT * FROM t1;
15. +----+
16. | a |
17. +----+
18. | 1 |
19. | 4 |
20. | 7 |
21. | 10 |
22. +----+
23. 4 rows in set (0.00 sec)
autocommit
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 类型:布尔型
- 默认值:
ON - 用于设置在非显式事务时是否自动提交事务。更多信息,请参见事务概述。
block_encryption_mode
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 类型:枚举型
- 默认值:
aes-128-ecb - 可选值:
aes-128-ecb、aes-192-ecb、aes-256-ecb、aes-128-cbc、aes-192-cbc、aes-256-cbc、aes-128-ofb、aes-192-ofb、aes-256-ofb、aes-128-cfb、aes-192-cfb、aes-256-cfb - 该变量用于设置
AES_ENCRYPT()和AES_DECRYPT()函数的加密模式。
character_set_client
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 默认值:
utf8mb4 - 这个变量表示从客户端发出的数据所用的字符集。有关更多 TiDB 支持的字符集和排序规则,参阅字符集和排序规则文档。如果需要更改字符集,建议使用 SET NAMES 语句。
character_set_connection
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 默认值:
utf8mb4 - 若没有为字符串常量指定字符集,该变量表示这些字符串常量所使用的字符集。
character_set_database
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 默认值:
utf8mb4 - 该变量表示当前默认在用数据库的字符集,不建议设置该变量。选择新的默认数据库后,服务器会更改该变量的值。
character_set_results
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 默认值:
utf8mb4 - 该变量表示数据发送至客户端时所使用的字符集。
character_set_server
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 默认值:
utf8mb4 - 当
CREATE SCHEMA中没有指定字符集时,该变量表示这些新建的表结构所使用的字符集。
collation_connection
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 默认值:
utf8mb4_bin - 该变量表示连接中所使用的排序规则。与 MySQL 中的
collation_connection一致。
collation_database
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 默认值:
utf8mb4_bin - 该变量表示当前数据库默认所使用的排序规则。与 MySQL 中的
collation_database一致。不建议设置此变量,当前使用的数据库变动时,此变量会被 TiDB 修改。
collation_server
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 默认值:
utf8mb4_bin - 该变量表示创建数据库时默认的排序规则。
cte_max_recursion_depth
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 类型:整数型
- 默认值:
1000 - 范围:
[0, 4294967295] - 这个变量用于控制公共表表达式的最大递归深度。
datadir
- 作用域:NONE
- 默认值:使用的组件和部署方式不同,默认值也不同。
/tmp/tidb:如果你将 --store 设置为"unistore"或没有设置--store,则默认值为/tmp/tidb。${pd-ip}:${pd-port}:如果你设置的存储引擎是 TiKV(如果使用 TiUP 和 TiDB Operator 部署,则默认的存储引擎为 TiKV),则默认值为${pd-ip}:${pd-port}。- 这个变量表示数据存储的位置,位置可以是本地路径
/tmp/tidb。如果数据存储在 TiKV 上,则可以是指向 PD 服务器的路径。变量值的格式为${pd-ip}:${pd-port},表示 TiDB 在启动时连接到的 PD 服务器。
ddl_slow_threshold
- 作用域:GLOBAL
- 是否持久化到集群:否,仅作用于当前连接的 TiDB 实例
- 类型:整数型
- 默认值:
300 - 取值范围:
[0, 2147483647] - 单位:毫秒
- 耗时超过该阈值的 DDL 操作会被输出到日志。
default_authentication_plugin
- 作用域:GLOBAL
- 是否持久化到集群:是
- 类型:枚举型
- 默认值:
mysql_native_password - 可选值:
mysql_native_password,caching_sha2_password,tidb_sm3_password,tidb_auth_token,authentication_ldap_sasl或authentication_ldap_simple。 tidb_auth_token认证方式仅用于 TiDB Cloud 内部实现,不要设置为该值。- 服务器和客户端建立连接时,这个变量用于设置服务器对外通告的默认身份验证方式。如要了解该变量的其他可选值,参见可用的身份验证插件。
- 若要在用户登录时使用
tidb_sm3_password插件,需要使用 TiDB-JDBC 进行连接。
default_password_lifetime 从 v6.5.0 版本开始引入
- 作用域:GLOBAL
- 是否持久化到集群:是
- 类型:整数型
- 默认值:
0 - 取值范围:
[0, 65535] - 该变量用于设置全局自动密码过期策略,默认值为
0,即禁用全局自动密码过期。如果设置该变量的值为正整数 N,则表示允许的密码生存期为 N,即必须在 N 天之内更改密码。
default_week_format
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 类型:整数型
- 默认值:
0 - 取值范围:
[0, 7] - 设置
WEEK()函数使用的周格式。
disconnect_on_expired_password 从 v6.5.0 版本开始引入
- 作用域:GLOBAL
- 类型:布尔型
- 默认值:
ON - 该变量是一个只读变量,用来显示 TiDB 是否会直接断开密码已过期用户的连接。当其值为
ON,表示 TiDB 会断开密码已过期用户的连接。当其值为OFF,表示 TiDB 会将密码已过期用户的连接置于“沙盒模式”,允许该用户建立连接并执行密码重置操作。 - 如果需要改变 TiDB 对密码已过期用户连接的处理方式,请在 TiDB 配置文件中的
[security]部分修改 disconnect-on-expired-password 选项。
error_count
- 作用域:SESSION
- 默认值:
0 - 类型:整数型
- 表示上一条生成消息的 SQL 语句中的错误数。该变量为只读变量。
foreign_key_checks
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 类型:布尔型
- 默认值:在 v6.6.0 之前版本中为
OFF,在 v6.6.0 及之后的版本中为ON。 - 表示是否开启外键约束检查。
group_concat_max_len
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 类型:整数型
- 默认值:
1024 - 取值范围:
[4, 18446744073709551615] - 表示
GROUP_CONCAT()函数中,项目的最大缓冲区大小。
have_openssl
- 作用域:NONE
- 类型:布尔型
- 默认值:
DISABLED - 用于 MySQL 兼容性的只读变量。当服务器启用 TLS 时,服务器将其设置为
YES。
have_ssl
- 作用域:NONE
- 类型:布尔型
- 默认值:
DISABLED - 用于 MySQL 兼容性的只读变量。当服务器启用 TLS 时,服务器将其设置为
YES。
hostname
- 作用域:NONE
- 默认值:(系统主机名)
- 这个变量一个只读变量,表示 TiDB server 的主机名。
identity 从 v5.3.0 版本开始引入
- 该变量为变量 last_insert_id 的别名。
init_connect
- 作用域:GLOBAL
- 是否持久化到集群:是
- 默认值:””
- 用户首次连接到 TiDB 服务器时,
init_connect特性允许 TiDB 自动执行一条或多条 SQL 语句。如果你有CONNECTION_ADMIN或者SUPER权限,这些 SQL 语句将不会被自动执行。如果这些语句执行报错,你的用户连接将被终止。
innodb_lock_wait_timeout
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 类型:整数型
- 默认值:
50 - 范围:
[1, 3600] - 单位:秒
- 悲观事务语句等锁时间。
interactive_timeout
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 类型:整数型
- 默认值:
28800 - 范围:
[1, 31536000] - 单位:秒
- 该变量表示交互式用户会话的空闲超时。交互式用户会话是指使用
CLIENT_INTERACTIVE选项调用 mysql_real_connect() API 建立的会话(例如:MySQL shell 和 MySQL client)。该变量与 MySQL 完全兼容。
last_insert_id 从 v5.3.0 版本开始引入
- 作用域:SESSION
- 类型:整数型
- 默认值:
0 - 取值范围:
[0, 9223372036854775807] - 返回由
INSERT语句产生的最新AUTO_INSCRENT或者AUTO_RANDOM值,与LAST_INSERT_ID()的返回的结果相同。与 MySQL 中的last_insert_id一致。
last_plan_from_binding 从 v4.0 版本开始引入
- 作用域:SESSION
- 类型:布尔型
- 默认值:
OFF - 该变量用来显示上一条执行的语句所使用的执行计划是否来自 binding 的执行计划。
last_plan_from_cache 从 v4.0 版本开始引入
- 作用域:SESSION
- 类型:布尔型
- 默认值:
OFF - 这个变量用来显示上一个
execute语句所使用的执行计划是不是直接从 plan cache 中取出来的。
last_sql_use_alloc 从 v6.4.0 版本开始引入
- 作用域:SESSION
- 默认值:
OFF - 这个变量是一个只读变量,用来显示上一个语句是否使用了缓存的 Chunk 对象 (Chunk allocation)。
license
- 作用域:NONE
- 默认值:
Apache License 2.0 - 这个变量表示 TiDB 服务器的安装许可证。
log_bin
- 作用域:NONE
- 类型:布尔型
- 默认值:
OFF - 该变量表示是否使用 TiDB Binlog。
max_connections
- 作用域:GLOBAL
- 是否持久化到集群:否,仅作用于当前连接的 TiDB 实例
- 类型:整数型
- 默认值:
0 - 取值范围:
[0, 100000] - 该变量表示 TiDB 中同时允许的最大客户端连接数,用于资源控制。
- 默认情况下,该变量值为
0表示不限制客户端连接数。当本变量的值大于0且客户端连接数到达此值时,TiDB 服务端将会拒绝新的客户端连接。
max_execution_time
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 类型:整数型
- 默认值:
0 - 范围:
[0, 2147483647] - 单位:毫秒
- 语句最长执行时间。默认值 (0) 表示无限制。

注意
max_execution_time目前对所有类型的语句生效,并非只对SELECT语句生效,与 MySQL 不同(只对SELECT语句生效)。实际精度在 100ms 级别,而非更准确的毫秒级别。- 对于使用了 MAX_EXECUTION_TIME Hint 的 SQL 语句,这些语句的最长执行时间将不受该变量限制,而是由该 Hint 进行限制。你也可以使用该 Hint 来创建 SQL 绑定,详情请参考 SQL 操作常见问题。
max_prepared_stmt_count
- 作用域:GLOBAL
- 是否持久化到集群:是
- 类型:整数型
- 默认值:
-1 - 范围:
[-1, 1048576] - 指定当前实例中 PREPARE 语句的最大数量。
- 值为
-1时表示不对实例中的PREPARE语句数量进行限制。 - 如果将变量值设为超过上限
1048576,则使用上限值1048576:
1. mysql> SET GLOBAL max_prepared_stmt_count = 1048577;
2. Query OK, 0 rows affected, 1 warning (0.01 sec)
4. mysql> SHOW WARNINGS;
5. +---------+------+--------------------------------------------------------------+
6. | Level | Code | Message |
7. +---------+------+--------------------------------------------------------------+
8. | Warning | 1292 | Truncated incorrect max_prepared_stmt_count value: '1048577' |
9. +---------+------+--------------------------------------------------------------+
10. 1 row in set (0.00 sec)
12. mysql> SHOW GLOBAL VARIABLES LIKE 'max_prepared_stmt_count';
13. +-------------------------+---------+
14. | Variable_name | Value |
15. +-------------------------+---------+
16. | max_prepared_stmt_count | 1048576 |
17. +-------------------------+---------+
18. 1 row in set (0.00 sec)
max_allowed_packet 从 v6.1.0 版本开始引入
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 类型:整数型
- 默认值:
67108864 - 取值范围:
[1024, 1073741824] - 该变量取值应为 1024 的整数倍。若取值无法被 1024 整除,则会提示 warning 并向下取整。例如设置为 1025 时,则 TiDB 中的实际取值为 1024。
- 服务器端和客户端在一次传送数据包的过程中所允许最大的数据包大小,单位为字节。
- 该变量的行为与 MySQL 兼容。
mpp_exchange_compression_mode 从 v6.6.0 版本开始引入
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 默认值:
UNSPECIFIED - 可选值:
NONE,FAST,HIGH_COMPRESSION,UNSPECIFIED - 该变量用于选择 MPP Exchange 算子的数据压缩模式,当 TiDB 选择版本号为
1的 MPP 执行计划时生效。该变量值的含义如下: UNSPECIFIED:表示未指定,TiDB 将自动选择压缩模式,当前 TiDB 自动选择FAST模式NONE:不使用数据压缩FAST:快速模式,整体性能较好,压缩比小于HIGH_COMPRESSIONHIGH_COMPRESSION:高压缩比模式
mpp_version 从 v6.6.0 版本开始引入
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 默认值:
UNSPECIFIED - 可选值:
UNSPECIFIED,0,1 - 该变量用于指定不同版本的 MPP 执行计划。指定后,TiDB 会选择指定版本的 MPP 执行计划。该变量值含义如下:
UNSPECIFIED:表示未指定,此时 TiDB 自动选择最新版本1。0:兼容所有 TiDB 集群版本,MPP 版本大于0的新特性均不会生效。1:从 v6.6.0 版本开始引入,用于开启 TiFlash 带压缩的数据交换,详情参见 MPP Version 和 Exchange 数据压缩。
password_history 从 v6.5.0 版本开始引入
- 作用域:GLOBAL
- 是否持久化到集群:是
- 类型:整数型
- 默认值:
0 - 范围:
[0, 4294967295] - 该变量用于建立密码重用策略,使 TiDB 基于密码更改次数限制密码的重复使用。该变量默认值为
0,表示禁用基于密码更改次数的密码重用策略。当设置该变量为一个正整数 N 时,表示不允许重复使用最近 N 次使用过的密码。
password_reuse_interval 从 v6.5.0 版本开始引入
- 作用域:GLOBAL
- 是否持久化到集群:是
- 类型:整数型
- 默认值:
0 - 范围:
[0, 4294967295] - 该变量用于建立密码重用策略,使 TiDB 基于经过时间限制密码重复使用。该变量默认值为 0,表示禁用基于密码经过时间的密码重用策略。当设置该变量为一个正整数 N 时,表示不允许重复使用最近 N 天内使用过的密码。
plugin_dir
- 作用域:GLOBAL
- 是否持久化到集群:否,仅作用于当前连接的 TiDB 实例
- 默认值:””
- 指定加载插件的目录。
plugin_load
- 作用域:GLOBAL
- 是否持久化到集群:否,仅作用于当前连接的 TiDB 实例
- 默认值:””
- 指定 TiDB 启动时加载的插件,多个插件之间用逗号(,)分隔。
port
- 作用域:NONE
- 类型:整数型
- 默认值:
4000 - 范围:
[0, 65535] - 使用 MySQL 协议时 tidb-server 监听的端口。
rand_seed1
- 作用域:SESSION
- 类型:整数型
- 默认值:
0 - 范围:
[0, 2147483647] - 该变量用于为 SQL 函数
RAND()中使用的随机值生成器添加种子。 - 该变量的行为与 MySQL 兼容。
rand_seed2
- 作用域:SESSION
- 类型:整数型
- 默认值:
0 - 范围:
[0, 2147483647] - 该变量用于为 SQL 函数
RAND()中使用的随机值生成器添加种子。 - 该变量的行为与 MySQL 兼容。
require_secure_transport 从 v6.1.0 版本开始引入
- 作用域:GLOBAL
- 是否持久化到集群:是
- 类型:布尔型
- 默认值:
OFF - 该变量控制是否所有 TiDB 的连接都在本地 socket 上进行通信,或使用 TLS。详情见为 TiDB 客户端服务端间通信开启加密传输。
- 该变量设置为
ON时,必须使用开启 TLS 的会话连接到 TiDB,防止在 TLS 配置不正确时出现锁定的情况。 - 在 v6.1.0 之前这个开关通过 TiDB 配置文件 (
security.require-secure-transport) 进行配置,升级到 v6.1.0 时会自动继承原有设置。
skip_name_resolve 从 v5.2.0 版本开始引入
- 作用域:GLOBAL
- 是否持久化到集群:是
- 类型:布尔型
- 默认值:
OFF - 该变量控制
tidb-server实例是否将主机名作为连接握手的一部分来解析。 - 当 DNS 不可靠时,可以启用该变量来提高网络性能。

注意
当 skip_name_resolve 设置为 ON 时,身份信息中包含主机名的用户将无法登录服务器。例如:
1. CREATE USER 'appuser'@'apphost' IDENTIFIED BY 'app-password';
该示例中,建议将 apphost 替换为 IP 地址或通配符(%)。
socket
- 作用域:NONE
- 默认值:””
- 使用 MySQL 协议时,tidb-server 所监听的本地 unix 套接字文件。
sql_log_bin
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 类型:布尔型
- 默认值:
ON - 表示是否将更改写入 TiDB Binlog。

注意
不建议将 sql_log_bin 设置为全局变量,因为 TiDB 的未来版本可能只允许将其设置为会话变量。
sql_mode
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 默认值:
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION - 这个变量控制许多 MySQL 兼容行为。详情见 SQL 模式。
sql_require_primary_key 从 v6.3.0 版本开始引入
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 类型:布尔型
- 默认值:
OFF - 这个变量用于控制表是否必须有主键。启用该变量后,如果在没有主键的情况下创建或修改表,将返回错误。
- 该功能基于 MySQL 8.0 的特性 sql_require_primary_key。
- 强烈推荐在使用 TiCDC 时启用该变量,因为同步数据变更至 MySQL sink 时要求表必须有主键。
sql_select_limit 从 v4.0.2 版本开始引入
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 类型:整数型
- 默认值:
18446744073709551615 - 范围:
[0, 18446744073709551615] - 单位:行
SELECT语句返回的最大行数。
ssl_ca
- 作用域:NONE
- 默认值:””
- 证书颁发机构 (CA) 文件的位置。若文件不存在,则变量值为空。该变量的值由 TiDB 配置项 ssl-ca 定义。
ssl_cert
- 作用域:NONE
- 默认值:””
- 用于 SSL/TLS 连接的证书文件的位置。若文件不存在,则变量值为空。该变量的值由 TiDB 配置项 ssl-cert 定义。
ssl_key
- 作用域:NONE
- 默认值:””
- 用于 SSL/TLS 连接的私钥文件的位置。若文件不存在,则变量值为空。该变量的值由 TiDB 配置项 ssl-key 定义。
system_time_zone
- 作用域:NONE
- 默认值:(随系统)
- 该变量显示首次引导启动 TiDB 时的系统时区。另请参阅 time_zone。
tidb_adaptive_closest_read_threshold 从 v6.3.0 版本开始引入
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 默认值:
4096 - 取值范围:
[0, 9223372036854775807] - 单位:字节
- 这个变量用于控制当 replica-read 设置为
closest-adaptive时,优先将读请求发送至 TiDB server 所在区域副本的阈值。当读请求预估的返回结果的大小超过此阈值时,TiDB 会将读请求优先发送至同一可用区的副本,否则会发送至 leader 副本。
tidb_allow_batch_cop 从 v4.0 版本开始引入
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 类型:整数型
- 默认值:
1 - 范围:
[0, 2] -
这个变量用于控制 TiDB 向 TiFlash 发送 coprocessor 请求的方式,有以下几种取值:
-
0:从不批量发送请求
- 1:aggregation 和 join 的请求会进行批量发送
- 2:所有的 cop 请求都会批量发送
tidb_allow_fallback_to_tikv 从 v5.0 版本开始引入
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 默认值:””
- 这个变量表示将 TiKV 作为备用存储引擎的存储引擎列表。当该列表中的存储引擎发生故障导致 SQL 语句执行失败时,TiDB 会使用 TiKV 作为存储引擎再次执行该 SQL 语句。目前支持设置该变量为 “” 或者 “tiflash”。如果设置该变量为 “tiflash”,当 TiFlash 返回超时错误(对应的错误码为 ErrTiFlashServerTimeout)时,TiDB 会使用 TiKV 作为存储引擎再次执行该 SQL 语句。
tidb_allow_function_for_expression_index 从 v5.2.0 版本开始引入
- 作用域:NONE
- 默认值:
json_array、json_array_append、json_array_insert、json_contains、json_contains_path、json_depth、json_extract、json_insert、json_keys、json_length、json_merge_patch、json_merge_preserve、json_object、json_pretty、json_quote、json_remove、json_replace、json_search、json_set、json_storage_size、json_type、json_unquote、json_valid、lower、md5、reverse、tidb_shard、upper、vitess_hash - 这个变量用于显示创建表达式索引所允许使用的函数。
tidb_allow_mpp 从 v5.0 版本开始引入
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 类型:布尔型
- 默认值:
ON - 这个变量用于控制是否使用 TiFlash 的 MPP 模式执行查询,可以设置的值包括:
- 0 或 OFF,代表从不使用 MPP 模式
- 1 或 ON,代表由优化器根据代价估算选择是否使用 MPP 模式(默认)
MPP 是 TiFlash 引擎提供的分布式计算框架,允许节点之间的数据交换并提供高性能、高吞吐的 SQL 算法。MPP 模式选择的详细说明参见控制是否选择 MPP 模式。
tidb_allow_remove_auto_inc 从 v2.1.18 和 v3.0.4 版本开始引入
- 作用域:SESSION
- 类型:布尔型
- 默认值:
OFF - 这个变量用来控制是否允许通过
ALTER TABLE MODIFY或ALTER TABLE CHANGE来移除某个列的AUTO_INCREMENT属性。默认 (OFF) 为不允许。
tidb_analyze_partition_concurrency

警告
当前版本中该变量控制的功能尚未完全生效,请保留默认值。
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 默认值:
1 - 这个变量用于 TiDB analyze 分区表时,对分区表统计信息进行读写的并发度。
tidb_analyze_version 从 v5.1.0 版本开始引入
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 类型:整数型
- 默认值:
2 - 范围:
[1, 2] - 这个变量用于控制 TiDB 收集统计信息的行为。
- 在 v5.3.0 及之后的版本中,该变量的默认值为
2,具体可参照统计信息简介文档。如果从 v5.3.0 之前版本的集群升级至 v5.3.0 及之后的版本,tidb_analyze_version的默认值不发生变化。
tidb_auto_analyze_end_time
- 作用域:GLOBAL
- 是否持久化到集群:是
- 类型:时间
- 默认值:
23:59 +0000 -
这个变量用来设置一天中允许自动 ANALYZE 更新统计信息的结束时间。例如,只允许在 UTC 时间的凌晨 1:00 至 3:00 之间自动更新统计信息,可以设置如下:
-
tidb_auto_analyze_start_time='01:00 +0000' tidb_auto_analyze_end_time='03:00 +0000'
tidb_auto_analyze_partition_batch_size 从 v6.4.0 版本开始引入
- 作用域:GLOBAL
- 是否持久化到集群:是
- 默认值:
1 - 范围:
[1, 1024] - 用于设置 TiDB 自动 analyze 分区表(即自动收集分区表上的统计信息)时,每次同时 analyze 分区的个数。
- 若该变量值小于分区表的分区数,则 TiDB 会分多批自动 analyze 该分区表的所有分区。若该变量值大于等于分区表的分区数,则 TiDB 会同时 analyze 该分区表的所有分区。
- 若分区表个数远大于该变量值,且自动 analyze 花费时间较长,可调大该参数的值以减少耗时。
tidb_auto_analyze_ratio
- 作用域:GLOBAL
- 是否持久化到集群:是
- 类型:浮点数
- 默认值:
0.5 - 范围:
[0, 18446744073709551615] - 这个变量用来设置 TiDB 在后台自动执行 ANALYZE TABLE 更新统计信息的阈值。
0.5指的是当表中超过 50% 的行被修改时,触发自动 ANALYZE 更新。可以指定tidb_auto_analyze_start_time和tidb_auto_analyze_end_time来限制自动 ANALYZE 的时间

注意
当系统变量 tidb_enable_auto_analyze 设置为 ON 时,TiDB 才会触发 auto_analyze。
tidb_auto_analyze_start_time
- 作用域:GLOBAL
- 是否持久化到集群:是
- 类型:时间
- 默认值:
00:00 +0000 -
这个变量用来设置一天中允许自动 ANALYZE 更新统计信息的开始时间。例如,只允许在 UTC 时间的凌晨 1:00 至 3:00 之间自动更新统计信息,可以设置如下:
-
tidb_auto_analyze_start_time='01:00 +0000' tidb_auto_analyze_end_time='03:00 +0000'
tidb_auto_build_stats_concurrency 从 v6.5.0 版本开始引入
- 作用域:GLOBAL
- 是否持久化到集群:是
- 类型:整数型
- 默认值:
1 - 范围:
[1, 256] - 这个变量用来设置执行统计信息自动更新的并发度。
tidb_backoff_lock_fast
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 类型:整数型
- 默认值:
10 - 范围:
[1, 2147483647] - 这个变量用来设置读请求遇到锁的 backoff 时间。
tidb_backoff_weight
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 类型:整数型
- 默认值:
2 - 范围:
[0, 2147483647] - 这个变量用来给 TiDB 的
backoff最大时间增加权重,即内部遇到网络或其他组件 (TiKV, PD) 故障时,发送重试请求的最大重试时间。可以通过这个变量来调整最大重试时间,最小值为 1。
例如,TiDB 向 PD 取 TSO 的基础超时时间是 15 秒,当 tidb_backoff_weight = 2 时,取 TSO 的最大超时时间为:基础时间 * 2 等于 30 秒。
在网络环境较差的情况下,适当增大该变量值可以有效缓解因为超时而向应用端报错的情况;而如果应用端希望更快地接到报错信息,则应该尽量减小该变量的值。
tidb_batch_commit

警告
不建议开启此变量。
- 作用域:SESSION
- 类型:布尔型
- 默认值:
OFF - 该变量控制是否启用已废弃的 batch-commit 特性。当该变量开启时,事务可能会通过分组一些语句被拆分为多个事务,并被非原子地提交。不推荐使用这种方式。
tidb_batch_delete

警告
该变量与废弃的 batch-dml 特性相关,可能会导致数据损坏。因此,不建议开启该变量来使用 batch-dml。作为替代,请使用非事务 DML 语句。
- 作用域:SESSION
- 类型:布尔型
- 默认值:
OFF - 该变量控制是否启用已废弃的 batch-dml 特性中的 batch-delete 特性。当该变量开启时,
DELETE语句可能会被拆分为多个事务,并被非原子地提交。要使该特性生效,还需要开启tidb_enable_batch_dml并将tidb_dml_batch_size的值设置为正数。不推荐使用这种方式。
tidb_batch_insert

警告
该变量与废弃的 batch-dml 特性相关,可能会导致数据损坏。因此,不建议开启该变量来使用 batch-dml。作为替代,请使用非事务 DML 语句。
- 作用域:SESSION
- 类型:布尔型
- 默认值:
OFF - 该变量控制是否启用已废弃的 batch-dml 特性中的 batch-insert 特性。当该变量开启时,
INSERT语句可能会被拆分为多个事务,并被非原子地提交。要使该特性生效,还需要开启tidb_enable_batch_dml并将tidb_dml_batch_size的值设置为正数。不推荐使用这种方式。
tidb_batch_pending_tiflash_count 从 v6.0 版本开始引入
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 类型:整数型
- 默认值:
4000 - 范围:
[0, 4294967295] - 使用
ALTER DATABASE SET TIFLASH REPLICA语句为 TiFlash 添加副本时,能容许的不可用表的个数上限。如果超过该上限,则会停止或者以非常慢的速度为库中的剩余表设置 TiFlash 副本。
tidb_broadcast_join_threshold_count 从 v5.0 版本开始引入
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 类型:整数型
- 默认值:
10240 - 范围:
[0, 9223372036854775807] - 单位:行
- 如果 join 的对象为子查询,优化器无法估计子查询结果集大小,在这种情况下通过结果集行数判断。如果子查询的行数估计值小于该变量,则选择 Broadcast Hash Join 算法。否则选择 Shuffled Hash Join 算法。
- 开启 tidb_prefer_broadcast_join_by_exchange_data_size 功能后,该变量将不再生效。
tidb_broadcast_join_threshold_size 从 v5.0 版本开始引入
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 类型:整数型
- 默认值:
104857600(100 MiB) - 范围:
[0, 9223372036854775807] - 单位:字节
- 如果表大小(字节数)小于该值,则选择 Broadcast Hash Join 算法。否则选择 Shuffled Hash Join 算法。
- 开启 tidb_prefer_broadcast_join_by_exchange_data_size 功能后,该变量将不再生效。
tidb_build_stats_concurrency
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 类型:整数型
- 单位:线程
- 默认值:
4 - 取值范围:
[1, 256] - 这个变量用来设置 ANALYZE 语句执行时并发度。
- 当这个变量被设置得更大时,会对其它的查询语句执行性能产生一定影响。
tidb_capture_plan_baselines 从 v4.0 版本开始引入
- 作用域:GLOBAL
- 是否持久化到集群:是
- 类型:布尔型
- 默认值:
OFF - 这个变量用于控制是否开启自动捕获绑定功能。该功能依赖 Statement Summary,因此在使用自动绑定之前需打开 Statement Summary 开关。
- 开启该功能后会定期遍历一次 Statement Summary 中的历史 SQL 语句,并为至少出现两次的 SQL 语句自动创建绑定。
tidb_cdc_write_source 从 v6.5.0 版本开始引入
- 作用域:SESSION
- 是否持久化到集群:否
- 类型:整数型
- 默认值:
0 - 范围:
[0, 15] - 当变量非
0时,该 SESSION 写入的数据将被视为是由 TiCDC 写入的。这个变量仅由 TiCDC 设置,任何时候都不应该手动调整该变量。
tidb_check_mb4_value_in_utf8
- 作用域:GLOBAL
- 是否持久化到集群:否,仅作用于当前连接的 TiDB 实例
- 类型:布尔型
- 默认值:
ON - 设置该变量为
ON可强制只存储基本多文种平面 (BMP) 编码区段内的utf8字符值。若要存储 BMP 区段外的utf8值,推荐使用utf8mb4字符集。 - 早期版本的 TiDB 中 (v2.1.x),
utf8检查更为宽松。如果你的 TiDB 集群是从早期版本升级的,推荐关闭该变量,详情参阅升级与升级后常见问题。
tidb_committer_concurrency 从 v6.1.0 版本开始引入
- 作用域:GLOBAL
- 是否持久化到集群:是
- 类型:整数型
- 默认值:
128 - 范围:
[1, 10000] - 在单个事务的提交阶段,用于执行提交操作相关请求的 goroutine 数量。
- 若提交的事务过大,事务提交时的流控队列等待耗时可能会过长。此时,可以通过调大该配置项来加速提交。
- 在 v6.1.0 之前这个开关通过 TiDB 配置文件 (
performance.committer-concurrency) 进行配置,升级到 v6.1.0 时会自动继承原有设置。
tidb_checksum_table_concurrency
- 作用域:SESSION
- 类型:整数型
- 默认值:
4 - 取值范围:
[1, 256] - 单位:线程
- 这个变量用来设置 ADMIN CHECKSUM TABLE 语句执行时扫描索引的并发度。当这个变量被设置得更大时,会对其它的查询语句执行性能产生一定影响。
tidb_config
- 作用域:GLOBAL
- 是否持久化到集群:否,仅作用于当前连接的 TiDB 实例
- 默认值:””
- 这个变量是一个只读变量,用来获取当前 TiDB Server 的配置信息。
tidb_constraint_check_in_place
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 类型:布尔型
- 默认值:
OFF - 该变量仅适用于乐观事务模型。悲观事务模式中的行为由 tidb_constraint_check_in_place_pessimistic 控制。
-
当这个变量设置为
OFF时,唯一索引的重复值检查会被推迟到事务提交时才进行。这有助于提高性能,但对于某些应用,可能导致非预期的行为。详情见约束。 -
乐观事务模型下将
tidb_constraint_check_in_place设置为OFF:1. create table t (i int key); 2. insert into t values (1); 3. begin optimistic; 4. insert into t values (1);1. Query OK, 1 row affected1. tidb> commit; -- 事务提交时才检查1. ERROR 1062 : Duplicate entry '1' for key 't.PRIMARY'- 乐观事务模型下将tidb_constraint_check_in_place设置为ON:1. set @@tidb_constraint_check_in_place=ON; 2. begin optimistic; 3. insert into t values (1);1. ERROR 1062 : Duplicate entry '1' for key 't.PRIMARY'
tidb_constraint_check_in_place_pessimistic 从 v6.3.0 版本开始引入
- 作用域:SESSION
- 类型:布尔型
- 默认值:当配置项 pessimistic-txn.constraint-check-in-place-pessimistic 为默认值
true时,该变量的默认值为ON。当配置项 pessimistic-txn.constraint-check-in-place-pessimistic 为false时,该变量的默认值为OFF。 - 该变量仅适用于悲观事务模型。乐观事务模式中的行为由 tidb_constraint_check_in_place 控制。
- 当这个变量设置为
OFF时,唯一约束检查会被推迟到下一次需要对这个索引加锁的语句执行时,或事务提交时才进行。这有助于提高性能,但对于某些应用,可能导致非预期的行为。详情见约束。 - 关闭该变量可能会导致悲观事务中返回
LazyUniquenessCheckFailure报错。返回该错误时,TiDB 将会回滚当前事务。 - 关闭该变量后,悲观事务中不支持使用 SAVEPOINT 功能。
-
关闭该变量时,commit 语句可能会报出
Write conflict错误或Duplicate entry错误,两种错误都意味着事务回滚。 -
悲观事务模型下将
tidb_constraint_check_in_place_pessimistic设置为OFF:1. set @@tidb_constraint_check_in_place_pessimistic=OFF; 2. create table t (i int key); 3. insert into t values (1); 4. begin pessimistic; 5. insert into t values (1);1. Query OK, 1 row affected1. tidb> commit; -- 事务提交时才检查1. ERROR 1062 : Duplicate entry '1' for key 't.PRIMARY'- 悲观事务模型下将tidb_constraint_check_in_place_pessimistic设置为ON:1. set @@tidb_constraint_check_in_place_pessimistic=ON; 2. begin pessimistic; 3. insert into t values (1);1. ERROR 1062 : Duplicate entry '1' for key 't.PRIMARY'
tidb_cost_model_version 从 v6.2.0 版本开始引入

注意
- 自 v6.5.0 开始,新创建的 TiDB 集群默认使用 Cost Model Version 2。如果从 v6.4.0 及之前版本的集群升级到 v6.5.0 及之后的版本,
tidb_cost_model_version的值不发生变化。 - 切换代价模型版本可能会引起查询计划的变动。
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 类型:整数型
- 默认值:
2 - 取值范围:
[1, 2] - 可选值:
1:使用 Cost Model Version 1 代价模型。TiDB v6.4.0 及之前的版本默认使用 Cost Model Version 1。2:使用 Cost Model Version 2 代价模型。TiDB v6.5.0 正式发布了代价模型 Cost Model Version 2,在内部测试中比 Version 1 版本的代价模型更加准确。- 代价模型会影响优化器对计划的选择,具体可见代价模型。
tidb_current_ts
- 作用域:SESSION
- 类型:整数型
- 默认值:
0 - 取值范围:
[0, 9223372036854775807] - 这个变量是一个只读变量,用来获取当前事务的时间戳。
tidb_ddl_disk_quota 从 v6.3.0 版本开始引入
- 作用域:GLOBAL
- 是否持久化到集群:是
- 默认值:
107374182400(100 GiB) - 范围:
[107374182400, 1125899906842624]([100 GiB, 1 PiB]) - 单位:字节
- 这个变量仅在 tidb_ddl_enable_fast_reorg 开启的情况下生效,用于设置创建索引的回填过程中本地存储空间的使用限制。
tidb_ddl_enable_fast_reorg 从 v6.3.0 版本开始引入
- 作用域:GLOBAL
- 是否持久化到集群:是
- 类型:布尔型
- 默认值:
ON - 这个变量用来控制是否开启添加索引加速功能,来提升创建索引回填过程的速度。开启该变量对于数据量较大的表有一定的性能提升。
- TiDB v7.1.0 引入了快速加索引功能的检查点机制,即使 TiDB owner 因故障重启或者切换,也能够通过自动定期保存的检查点恢复部分进度。
- 要验证已经完成的
ADD INDEX操作是否使用了添加索引加速功能,可以执行 ADMIN SHOW DDL JOBS 语句查看JOB_TYPE一列中是否含有ingest字样。

警告
目前,PITR 恢复会额外处理日志备份时间段内通过索引加速功能创建的索引,以达到兼容效果。详细内容请参考索引加速功能为什么与 PITR 功能不兼容。

注意
在升级到 v6.5.0 及以上版本时,建议你检查 TiDB 的 temp-dir 路径是否正确挂载了 SSD 磁盘。该参数是 TiDB 的配置参数,设置后需要重启 TiDB 才能生效。因此,在升级前提前进行设置,可以避免再次重启。
tidb_enable_dist_task 从 v7.1.0 版本开始引入

警告
该功能目前为实验特性,不建议在生产环境中使用。
- 作用域:GLOBAL
- 是否持久化到集群:是
- 默认值:
OFF - 这个变量用于控制是否开启 TiDB 后端任务分布式框架。开启分布式框架后,DDL 和 Import 等后端任务将会由集群中多个 TiDB 节点共同完成。
- 在 TiDB v7.1.0 中,只支持分布式执行分区表的
ADD INDEX。 - 该变量由
tidb_ddl_distribute_reorg改名而来。
tidb_ddl_error_count_limit
- 作用域:GLOBAL
- 是否持久化到集群:是
- 类型:整数型
- 默认值:
512 - 范围:
[0, 9223372036854775807] - 这个变量用来控制 DDL 操作失败重试的次数。失败重试次数超过该参数的值后,会取消出错的 DDL 操作。
tidb_ddl_flashback_concurrency 从 v6.3.0 版本开始引入
- 作用域:GLOBAL
- 是否持久化到集群:是
- 类型:整数型
- 默认值:
64 - 范围:
[1, 256] - 这个变量用来控制 FLASHBACK CLUSTER TO TIMESTAMP 的并发数。
tidb_ddl_reorg_batch_size
- 作用域:GLOBAL
- 是否持久化到集群:是
- 类型:整数型
- 默认值:
256 - 范围:
[32, 10240] - 单位:行
-
这个变量用来设置 DDL 操作
re-organize阶段的 batch size。比如ADD INDEX操作,需要回填索引数据,通过并发tidb_ddl_reorg_worker_cnt个 worker 一起回填数据,每个 worker 以 batch 为单位进行回填。 -
如果
ADD INDEX操作时有较多UPDATE操作或者REPLACE等更新操作,batch size 越大,事务冲突的概率也会越大,此时建议调小 batch size 的值,最小值是 32。 - 在没有事务冲突的情况下,batch size 可设为较大值(需要参考 worker 数量,见线上负载与 ADD INDEX 相互影响测试),这样回填数据的速度更快,但是 TiKV 的写入压力也会变大。
tidb_ddl_reorg_priority
- 作用域:SESSION
- 类型:枚举型
- 默认值:
PRIORITY_LOW - 可选值:
PRIORITY_LOW、PRIORITY_NORMAL、PRIORITY_HIGH - 这个变量用来设置
ADD INDEX操作re-organize阶段的执行优先级,可设置为PRIORITY_LOW/PRIORITY_NORMAL/PRIORITY_HIGH。
tidb_ddl_reorg_worker_cnt
- 作用域:GLOBAL
- 是否持久化到集群:是
- 类型:整数型
- 默认值:
4 - 范围:
[1, 256] - 单位:线程
- 这个变量用来设置 DDL 操作
re-organize阶段的并发度。
tidb_default_string_match_selectivity 从 v6.2.0 版本开始引入
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 类型:浮点型
- 默认值:
0.8 - 范围:
[0, 1] - 这个变量用来设置过滤条件中的
like、rlike、regexp函数在行数估算时的默认选择率,以及是否对这些函数启用 TopN 辅助估算。 - TiDB 总是会尝试利用统计信息对过滤条件中的
like进行估算,但是当like匹配的字符串太复杂时,或者面对rlike或regexp时,往往无法充分利用统计信息,转而使用0.8作为选择率,造成行数估算的误差较大。 - 该变量可以用于修改这个行为,当变量被设为
0以外的值时,会使用变量的值而不是默认的0.8作为选择率。 - 如果将该变量的值设为
0,TiDB 在对上述三个函数进行行数估算时,会尝试利用统计信息中的 TopN 进行求值来提高估算精度,同时也会考虑统计信息中的 NULL 数。求值操作预计会造成少量性能损耗。这个功能生效的前提是统计信息是在 tidb_analyze_version 设为2时收集的。 - 当该变量的值被设为默认值以外的值的时候,会对
not like、not rlike、not regexp的行数估算也进行相应的调整。
tidb_disable_txn_auto_retry
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 类型:布尔型
- 默认值:
ON - 这个变量用来设置是否禁用显式的乐观事务自动重试,设置为
ON时,不会自动重试,如果遇到事务冲突需要在应用层重试。
如果将该变量的值设为 OFF,TiDB 将会自动重试事务,这样在事务提交时遇到的错误更少。需要注意的是,这样可能会导致数据更新丢失。
这个变量不会影响自动提交的隐式事务和 TiDB 内部执行的事务,它们依旧会根据 tidb_retry_limit 的值来决定最大重试次数。
关于是否需要禁用自动重试,请参考重试的局限性。
该变量只适用于乐观事务,不适用于悲观事务。悲观事务的重试次数由 max_retry_count 控制。
tidb_distsql_scan_concurrency
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 类型:整数型
- 默认值:
15 - 范围:
[1, 256] - 单位:线程
- 这个变量用来设置 scan 操作的并发度。
- AP 类应用适合较大的值,TP 类应用适合较小的值。对于 AP 类应用,最大值建议不要超过所有 TiKV 节点的 CPU 核数。
- 若表的分区较多可以适当调小该参数(取决于扫描数据量的大小以及扫描频率),避免 TiKV 内存溢出 (OOM)。
tidb_dml_batch_size

警告
该变量与废弃的 batch-dml 特性相关,可能会导致数据损坏。因此,不建议开启该变量来使用 batch-dml。作为替代,请使用非事务 DML 语句。
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 类型:整数型
- 默认值:
0 - 范围:
[0, 2147483647] - 单位:行
- 这个变量的值大于
0时,TiDB 会将INSERT语句在更小的事务中批量提交。这样可减少内存使用,确保大批量修改时事务大小不会达到txn-total-size-limit限制。 - 只有变量值为
0时才符合 ACID 要求。否则无法保证 TiDB 的原子性和隔离性要求。 - 要使该特性生效,还需要开启
tidb_enable_batch_dml,以及至少开启tidb_batch_insert和tidb_batch_delete中的一个。

注意
自 v7.0.0 起,tidb_dml_batch_size 对 LOAD DATA 语句不再生效。
tidb_enable_1pc 从 v5.0 版本开始引入
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 类型:布尔型
- 默认值:
ON - 指定是否在只涉及一个 Region 的事务上启用一阶段提交特性。比起传统两阶段提交,一阶段提交能大幅降低事务提交延迟并提升吞吐。

注意
- 对于新创建的集群,默认值为 ON。对于升级版本的集群,如果升级前是 v5.0 以下版本,升级后默认值为
OFF。 - 启用 TiDB Binlog 后,开启该选项无法获得性能提升。要获得性能提升,建议使用 TiCDC 替代 TiDB Binlog。
- 启用该参数仅意味着一阶段提交成为可选的事务提交模式,实际由 TiDB 自行判断选择最合适的提交模式进行事务提交。
tidb_enable_analyze_snapshot 从 v6.2.0 版本开始引入
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 类型:布尔型
- 默认值:
OFF - 该变量控制
ANALYZE读取历史时刻的数据还是读取最新的数据。当该变量设置为ON时,ANALYZE读取ANALYZE开始时刻的历史数据。当该变量设置为OFF时,ANALYZE读取最新的数据。 - 在 v5.2 之前,
ANALYZE读取最新的数据。v5.2 至 v6.1 版本ANALYZE读取ANALYZE开始时刻的历史数据。

警告
如果 ANALYZE 读取 ANALYZE 开始时刻的历史数据,长时间的 AUTO ANALYZE 可能会因为历史数据被 GC 而出现 GC life time is shorter than transaction duration 的报错。
tidb_enable_async_commit 从 v5.0 版本开始引入
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 类型:布尔型
- 默认值:
ON - 该变量控制是否启用 Async Commit 特性,使事务两阶段提交的第二阶段于后台异步进行。开启本特性能降低事务提交的延迟。

注意
- 对于新创建的集群,默认值为 ON。对于升级版本的集群,如果升级前是 v5.0 以下版本,升级后默认值为
OFF。 - 启用 TiDB Binlog 后,开启该选项无法获得性能提升。要获得性能提升,建议使用 TiCDC 替代 TiDB Binlog。
- 启用该参数仅意味着 Async Commit 成为可选的事务提交模式,实际由 TiDB 自行判断选择最合适的提交模式进行事务提交。
tidb_enable_auto_analyze 从 v6.1.0 版本开始引入
- 作用域:GLOBAL
- 是否持久化到集群:是
- 类型:布尔型
- 默认值:
ON - 该变量控制 TiDB 是否以后台操作自动更新表的统计信息。
- 在 v6.1.0 之前这个开关通过 TiDB 配置文件 (
performance.run-auto-analyze) 进行配置,升级到 v6.1.0 时会自动继承原有设置。
tidb_enable_auto_increment_in_generated
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 类型:布尔型
- 默认值:
OFF - 这个变量用于控制是否允许在创建生成列或者表达式索引时引用自增列。
tidb_enable_batch_dml

警告
该变量与废弃的 batch-dml 特性相关,可能会导致数据损坏。因此,不建议开启该变量来使用 batch-dml。作为替代,请使用非事务 DML 语句。
- 作用域:GLOBAL
- 是否持久化到集群:是
- 类型:布尔型
- 默认值:
OFF - 该变量控制是否启用废弃的 batch-dml 特性。启用该变量后,部分语句可能会被拆分为多个事务执行,这是非原子性的,使用时需谨慎。使用 batch-dml 时,必须确保正在操作的数据没有并发操作。要使该变量生效,还需要为
tidb_batch_dml_size指定一个正值,并启用tidb_batch_insert和tidb_batch_delete中的至少一个。
tidb_enable_cascades_planner

警告
目前 cascades planner 为实验特性,不建议在生产环境中使用。
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 类型:布尔型
- 默认值:
OFF - 这个变量用于控制是否开启 cascades planner。
tidb_enable_chunk_rpc 从 v4.0 版本开始引入
- 作用域:SESSION
- 类型:布尔型
- 默认值:
ON - 这个变量用来设置是否启用 Coprocessor 的
Chunk数据编码格式。
tidb_enable_clustered_index 从 v5.0 版本开始引入
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 类型:枚举型
- 默认值:
ON - 可选值:
OFF,ON,INT_ONLY - 这个变量用于控制默认情况下表的主键是否使用聚簇索引。“默认情况”即不显式指定
CLUSTERED/NONCLUSTERED关键字的情况。可设置为OFF/ON/INT_ONLY。 OFF表示所有主键默认使用非聚簇索引。ON表示所有主键默认使用聚簇索引。INT_ONLY此时的行为受配置项alter-primary-key控制。如果该配置项取值为true,则所有主键默认使用非聚簇索引;如果该配置项取值为false,则由单个整数类型的列构成的主键默认使用聚簇索引,其他类型的主键默认使用非聚簇索引。
tidb_enable_collect_execution_info
- 作用域:GLOBAL
- 是否持久化到集群:否,仅作用于当前连接的 TiDB 实例
- 类型:布尔型
- 默认值:
ON - 这个变量用于控制是否同时将各个执行算子的执行信息记录入 slow query log 中。
tidb_enable_column_tracking 从 v5.4.0 版本开始引入

警告
收集 PREDICATE COLUMNS 的统计信息目前为实验特性,不建议在生产环境中使用。
- 作用域:GLOBAL
- 是否持久化到集群:是
- 类型:布尔型
- 默认值:
OFF - 这个变量用于控制是否开启 TiDB 对
PREDICATE COLUMNS的收集。关闭该变量后,之前收集的PREDICATE COLUMNS会被清除。详情见收集部分列的统计信息。
tidb_enable_ddl 从 v6.3.0 版本开始引入
- 作用域:GLOBAL
- 是否持久化到集群:否,仅作用于当前连接的 TiDB 实例
- 默认值:
ON - 可选值:
OFF,ON - 用于设置该 TiDB 实例是否可以成为 DDL owner。若当前 TiDB 集群中只有一台 TiDB 实例,则不能禁止该实例成为 DDL owner,即不能设置为
OFF。
tidb_enable_enhanced_security
- 作用域:NONE
- 类型:布尔型
- 默认值:
OFF - 这个变量表示所连接的 TiDB 服务器是否启用了安全增强模式 (SEM)。若要改变该变量值,你需要在 TiDB 服务器的配置文件中修改
enable-sem项的值,并重启 TiDB 服务器。 - 安全增强模式受安全增强式 Linux 等系统设计的启发,削减拥有 MySQL
SUPER权限的用户能力,转而使用细粒度的RESTRICTED权限作为替代。这些细粒度的RESTRICTED权限如下: RESTRICTED_TABLES_ADMIN:能够写入mysql库中的系统表,能查看information_schema表上的敏感列。RESTRICTED_STATUS_ADMIN:能够在SHOW STATUS命令中查看敏感内容。RESTRICTED_VARIABLES_ADMIN:能够在SHOW [GLOBAL] VARIABLES和SET命令中查看和设置包含敏感内容的变量。RESTRICTED_USER_ADMIN:能够阻止其他用户更改或删除用户帐户。RESTRICTED_CONNECTION_ADMIN:能够阻止其它用户使用KILL语句终止连接。
tidb_enable_external_ts_read 从 v6.4.0 版本开始引入
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 类型:布尔型
- 默认值:
OFF - 当此变量设置为
ON时,TiDB 会读取 tidb_external_ts 指定时间戳前的历史数据。
tidb_external_ts 从 v6.4.0 版本开始引入
- 作用域:GLOBAL
- 是否持久化到集群:是
- 类型:整数型
- 默认值:
0 - 当 tidb_enable_external_ts_read 设置为
ON时,TiDB 会依据该变量指定的时间戳读取历史数据。
tidb_restricted_read_only 从 v5.2.0 版本开始引入
- 作用域:GLOBAL
- 是否持久化到集群:是
- 类型:布尔型
- 默认值:
OFF - 可选值:
OFF和ON tidb_restricted_read_only和 tidb_super_read_only 的作用相似。在大多数情况下,你只需要使用 tidb_super_read_only 即可。- 拥有
SUPER或SYSTEM_VARIABLES_ADMIN权限的用户可以修改该变量。如果 TiDB 开启了安全增强模式,你还需要额外的RESTRICTED_VARIABLES_ADMIN权限才能读取或修改该变量。 -
tidb_restricted_read_only的设置将影响 tidb_super_read_only 的值: -
当设置
tidb_restricted_read_only为ON时,tidb_super_read_only 的将自动被设置为ON。 - 当设置
tidb_restricted_read_only为OFF时,tidb_super_read_only 的值将不受影响。 - 当
tidb_restricted_read_only为ON时,tidb_super_read_only 的值无法设置为OFF。 - 对于 TiDB 的 DBaaS 供应商,当 TiDB 为另一个数据库的下游数据库时,如果要将整个 TiDB 集群设置为只读模式,你需要开启安全增强模式 并将
tidb_restricted_read_only设置为ON,从而防止你的用户通过 tidb_super_read_only 将 TiDB 集群设置为可写。实现方法:首先开启安全增强模式,然后由你(作为 DBaaS 的控制面)使用一个 admin 用户控制tidb_restricted_read_only(需要拥有SYSTEM_VARIABLES_ADMIN和RESTRICTED_VARIABLES_ADMIN权限),由你的数据库用户使用 root 用户控制 tidb_super_read_only(需要拥有SUPER权限)。 - 该变量可以控制整个集群的只读状态。开启后(即该值为
ON),整个集群中的 TiDB 服务器都将进入只读状态,只有SELECT、USE、SHOW等不会修改数据的语句才能被执行,其他如INSERT、UPDATE等语句会被拒绝执行。 - 该变量开启只读模式只保证整个集群最终进入只读模式,当变量修改状态还没被同步到其他 TiDB 服务器时,尚未同步的 TiDB 仍然停留在非只读模式。
- 在执行 SQL 语句之前,TiDB 会检查集群的只读标志。从 v6.2.0 起,在提交 SQL 语句之前,TiDB 也会检查该标志,从而防止在服务器被置于只读模式后某些长期运行的 auto commit 语句可能修改数据的情况。
-
在变量开启时,对于尚未提交的事务:
-
如果有尚未提交的只读事务,可正常提交该事务。
- 如果尚未提交的事务为非只读事务,在事务内执行写入的 SQL 语句会被拒绝。
- 如果尚未提交的事务已经有数据改动,其提交也会被拒绝。
- 当集群开启只读模式后,所有用户(包括
SUPER用户)都无法执行可能写入数据的 SQL 语句,除非该用户被显式地授予了RESTRICTED_REPLICA_WRITER_ADMIN权限。
tidb_enable_exchange_partition
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 类型:布尔型
- 默认值:
ON - 该变量用于设置是否启用 exchange partitions with tables 特性。默认值为
ON,即默认开启该功能。 - 该变量自 v6.3.0 开始废弃,其取值将固定为默认值
ON,即默认开启exchange partitions with tables。
tidb_enable_extended_stats
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 类型:布尔型
- 默认值:
OFF - 该变量指定 TiDB 是否收集扩展统计信息来指导优化器。
tidb_enable_fast_analyze

警告
目前快速分析功能为实验特性,不建议在生产环境中使用。
- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 类型:布尔型
- 默认值:
OFF - 这个变量用来控制是否启用统计信息快速分析功能。默认值 0 表示不开启。
- 快速分析功能开启后,TiDB 会随机采样约 10000 行的数据来构建统计信息。因此在数据分布不均匀或者数据量比较少的情况下,统计信息的准确度会比较低。这可能导致执行计划不优,比如选错索引。如果可以接受普通
ANALYZE语句的执行时间,则推荐关闭快速分析功能。
tidb_enable_foreign_key 从 v6.3.0 版本开始引入
- 作用域:GLOBAL
- 是否持久化到集群:是
- 类型:布尔型
- 默认值:在 v6.6.0 之前版本中为
OFF,在 v6.6.0 及之后的版本中为ON。 - 这个变量用于控制是否开启
FOREIGN KEY特性。
tidb_enable_gc_aware_memory_track

警告
该变量为 TiDB 内部调试变量,可能会在未来版本中删除,请勿设置该变量。
- 作用域:GLOBAL
- 是否持久化到集群:是
- 类型:布尔型
- 默认值:
OFF - 这个变量用于控制是否开启可感知到垃圾回收的内存追踪 (GC-Aware memory track)。
tidb_enable_non_prepared_plan_cache

