更新时间:2026-07-28 GMT+08:00
分享

技术原理

核心机制

设置GUC参数resilience_ctrlstmt_detect_timelimit或wlmrule Plan Hint,业务线程会在执行过程中设置对应时间的定时器,定时器到期后将当前业务线程标识为执行慢SQL的线程,对于执行慢SQL的线程将执行以下管控:

  • 当执行慢SQL的线程数量超过resilience_ctrlslot_available_maxpercent取值乘以线程池线程数量最大值后,后续执行慢SQL的线程强制cancel。
  • 当执行慢SQL的线程IOPS超过resilience_ctrlstmt_control_iopslimit,使对应线程睡眠0~1秒内的随机值。

接口介绍

快慢车道主要使用以下GUC参数,具体描述请参见《参考》中“数据库运行参数说明 > GUC参数说明 > 负载管理”章节。

表1 GUC参数

参数名

参数说明

resilience_ctrlslot_available_maxpercent

最多允许慢SQL占用线程池线程数的百分比。

resilience_ctrlstmt_detect_timelimit

正常SQL语句被标记为慢SQL所需的执行时间,0表示不做慢SQL识别,大于0表示当SQL执行时间超过该时间时被标记为慢SQL。

resilience_ctrlstmt_control_iopslimit

正常SQL语句被标记为慢SQL后,慢SQL可使用的最大IOPS上限。

快慢车道使用wlmrule Plan Hint,具体描述请参见《SQL调优指南》中“使用Plan Hint进行调优 > 设置慢SQL管控规则的Hint”章节。

表2 Plan Hint

Plan Hint

Plan Hint说明

wlmrule("time_limit,max_execute_time,max_iops")

针对想要进行执行时间/资源管控的SQL语句,设置其被标记为慢SQL的执行时间,最大执行时间,最大IOPS上限。

相关文档