@@ -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
186188SELECT /* + 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 ` 的示例如下:
0 commit comments