Skip to content
Open
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 16 additions & 1 deletion system-variables.md
Original file line number Diff line number Diff line change
Expand Up @@ -2479,6 +2479,21 @@ mysql> SELECT job_info FROM mysql.analyze_jobs ORDER BY end_time DESC LIMIT 1;
- 默认值:`ON`
- 这个变量用来控制是否开启 statement summary 功能。如果开启,SQL 的耗时等执行信息将被记录到系统表 `information_schema.STATEMENTS_SUMMARY` 中,用于定位和排查 SQL 性能问题。

### `tidb_enable_strict_not_null_check` <span class="version-mark">从 v9.0.0 版本开始引入</span>

- 作用域:SESSION | GLOBAL
- 是否持久化到集群:是
- 是否受 Hint [SET_VAR](/optimizer-hints.md#set_varvar_namevar_value) 控制:否
- 类型:布尔型
- 默认值:`ON`
- 该变量用于控制在向定义为 NOT NULL 的列插入 NULL 值时的校验行为。
Comment thread
qiancai marked this conversation as resolved.
Outdated

Comment thread
qiancai marked this conversation as resolved.
Outdated
MySQL 兼容性:
- ON (默认值):与 MySQL 8.0 的标准行为保持一致。对于 NOT NULL 约束执行严格校验,插入 NULL 值将直接触发错误。
- OFF:模拟 MySQL 5.7 及其早期版本在非严格模式下的行为。允许向非空列插入 NULL,此时系统不会报错,而是自动赋予该列对应数据类型的隐式默认值(例如数字类型填充 0,字符串类型填充空字符串 "")。

TiDB 在早期版本中对非空约束的校验相对宽松。当从低版本 TiDB(如 v6.x、v7.x 等)升级至 v8.5 或更高版本时,如果存量业务逻辑依赖于这种“隐式赋默认值”的行为,开启此变量可能会导致原有 SQL 报错。如果从 MySQL 5.7 迁移至 TiDB,或从 TiDB 早期版本平滑升级至高版本且无法立即修改业务逻辑,可将此变量设置为 `OFF` 。
Comment thread
qiancai marked this conversation as resolved.
Outdated

### `tidb_enable_strict_double_type_check` <span class="version-mark">从 v5.0 版本开始引入</span>

- 作用域:SESSION | GLOBAL
Expand Down Expand Up @@ -2760,7 +2775,7 @@ v5.0 后,用户仍可以单独修改以上系统变量(会有废弃警告)
- 是否受 Hint [SET_VAR](/optimizer-hints.md#set_varvar_namevar_value) 控制:否
- 类型:布尔型
- 默认值:`OFF`
- 该变量用于控制在悲观事务中,外键约束检查对父表中的行加锁时是否使用共享锁(而非排他锁)。开启后,多个并发事务可以同时对同一父表行执行外键检查而不互相阻塞,从而降低锁冲突并提升子表并发写入性能。
- 该变量用于控制在悲观事务中,外键约束检查对父表中的行加锁时是否使用共享锁(而非排他锁)。开启后,多个并发事务可以同时对同一父表行执行外键检查而不互相阻塞,从而降低锁冲突并提升子表并发写入性能。

### `tidb_gc_concurrency` <span class="version-mark">从 v5.0 版本开始引入</span>

Expand Down
Loading