Skip to content

Commit 437be1b

Browse files
committed
*: add test info and tiny update
1 parent a16078e commit 437be1b

File tree

2 files changed

+18
-15
lines changed

2 files changed

+18
-15
lines changed

identify-slow-queries.md

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -178,10 +178,12 @@ Slow Query 基础信息:
178178
### 相关 Hint
179179

180180
通过 Hit `WRITE_SLOW_LOG` 强制控制输出慢日志。
181+
181182
- 不受任何阈值或触发规则限制,即无论该 SQL 是否达到慢日志打印阈值,都会打印慢日志。
182183
- 暂不支持强制关闭打印慢日志的方式(如 `WRITE_SLOW_LOG(FALSE)`)。
183184

184185
使用示例:
186+
185187
```sql
186188
SELECT /*+ WRITE_SLOW_LOG */ count(*) FROM t t1, t t2 WHERE t1.a = t2.b;
187189
```
@@ -190,25 +192,25 @@ SELECT /*+ WRITE_SLOW_LOG */ count(*) FROM t t1, t t2 WHERE t1.a = t2.b;
190192

191193
* [tidb_slow_log_threshold](/system-variables.md#tidb_slow_log_threshold):设置慢日志的阈值,执行时间超过阈值的 SQL 语句将被记录到慢日志中。默认值是 300 ms。
192194
* [tidb_slow_log_rules](/system-variables.md#tidb_slow_log_rules):用于定义慢日志的触发规则,支持多维度指标组合条件,实现更加灵活和精细化的日志记录控制。此变量在新版本中引入,逐步替代传统的单一阈值控制方式,即替代 `tidb_slow_log_threshold` 的使用。
193-
* 未设置 tidb_slow_log_rules
194-
* 慢日志触发仍依赖 tidb_slow_log_threshold,Query_time 阈值取自该变量,以保持向后兼容。
195-
* 已设置 tidb_slow_log_rules
196-
* 配置的规则优先生效,tidb_slow_log_threshold 将被忽略。
197-
* 若希望规则中仍包含 Query_time 的触发条件,可在设置规则时指定。
198-
* 规则匹配逻辑(多条规则之间采用 OR 关系):
199-
* Session 作用域规则:优先匹配,如果匹配成功,则打印慢日志。
200-
* Global 作用域规则:仅在 Session 规则未匹配时考虑:
201-
* 若规则指定 ConnID 并与当前 Session 的 ConnID 匹配,则使用该规则。
202-
* 若规则未指定 ConnID(全局通用规则),则使用该规则。
203-
* 显示变量的行为与普通系统变量一致。
195+
* 未设置 tidb_slow_log_rules
196+
* 慢日志触发仍依赖 tidb_slow_log_threshold,Query_time 阈值取自该变量,以保持向后兼容。
197+
* 已设置 tidb_slow_log_rules
198+
* 配置的规则优先生效,tidb_slow_log_threshold 将被忽略。
199+
* 若希望规则中仍包含 Query_time 的触发条件,可在设置规则时指定。
200+
* 规则匹配逻辑(多条规则之间采用 OR 关系):
201+
* Session 作用域规则:优先匹配,如果匹配成功,则打印慢日志。
202+
* Global 作用域规则:仅在 Session 规则未匹配时考虑:
203+
* 若规则指定 ConnID 并与当前 Session 的 ConnID 匹配,则使用该规则。
204+
* 若规则未指定 ConnID(全局通用规则),则使用该规则。
205+
* 显示变量的行为与普通系统变量一致。
204206
>
205207
> 说明:`tidb_slow_log_rules` 用于替换单一阈值的方式,实现更灵活和精细化的慢日志控制,支持多维度指标组合条件。
206208
>
207-
> 建议:在启用 `tidb_slow_log_rules` 后,同时配置 `tidb_slow_log_max_per_sec`,以限制慢日志打印频率,防止基于规则的慢日志触发过于频繁
209+
> 建议:在资源充足的测试环境(1 TiDB:16C/48G,3 TiKV:16C/48G)中,多次 sysbench 测试结果表明:当多维慢日志规则生成的慢日志量处于半小时内数百万级时,对性能影响较小;但若日志量达到千万级,则会导致 TPS、延迟出现明显下降。在业务负载较高或 CPU/内存接近瓶颈时,应谨慎配置 `tidb_slow_log_rules`,避免规则过宽导致日志洪泛。建议结合 `tidb_slow_log_max_per_sec` 限制日志打印速率,以降低对业务性能的影响
208210
* [tidb_slow_log_max_per_sec](/system-variables.md#tidb_slow_log_max_per_sec):设置控制每秒打印慢日志的上限,默认值为 0。
209-
* 当值为 0,其表示不限制每秒打印的慢日志数量。
210-
* 当值大于 0 时,TiDB 每秒最多打印指定数量的慢日志,超过部分将被丢弃,不会写入慢日志文件。
211-
* 建议在启用了 tidb_slow_log_rules 后配置该变量,以防规则触发频繁打印慢日志。
211+
* 当值为 0,其表示不限制每秒打印的慢日志数量。
212+
* 当值大于 0 时,TiDB 每秒最多打印指定数量的慢日志,超过部分将被丢弃,不会写入慢日志文件。
213+
* 建议在启用了 tidb_slow_log_rules 后配置该变量,以防规则触发频繁打印慢日志。
212214
* [tidb_query_log_max_len](/system-variables.md#tidb_query_log_max_len):设置慢日志记录 SQL 语句的最大长度。默认值是 4096 byte。
213215
* [tidb_redact_log](/system-variables.md#tidb_redact_log):设置慢日志记录 SQL 时是否将用户数据脱敏用 `?` 代替。默认值是 `0`,即关闭该功能。
214216
* [tidb_enable_collect_execution_info](/system-variables.md#tidb_enable_collect_execution_info):设置是否记录执行计划中各个算子的物理执行信息,默认值是 `1`。该功能对性能的影响约为 3%。开启该项后查看 `Plan` 的示例如下:

system-variables.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5080,6 +5080,7 @@ Query OK, 0 rows affected, 1 warning (0.00 sec)
50805080
- 默认值:""
50815081
- 类型:字符串
50825082
- 用于定义慢日志的触发规则,支持基于多维度指标的组合条件,实现更加灵活和精细化的日志记录控制。
5083+
50835084
> **注意:**
50845085
>
50855086
> 建议在启用 [`tidb_slow_log_rules`](#tidb_slow_log_rules) 后,同时配置 [`tidb_slow_log_max_per_sec`](#tidb_slow_log_max_per_sec) 以限制慢日志打印频率,防止基于规则的慢日志触发过于频繁。

0 commit comments

Comments
 (0)