技术原理
核心机制
GaussDB启动时,会将SQL限流规则从系统表加载到内存中。SQL限流的流程如下:
- 用户执行任意SQL语句时,GaussDB会根据该SQL语句去内存中匹配满足条件的限流规则。
- 如果匹配到限流规则,将内存中该规则的dop字段值加1。dop字段用于记录限流规则的实时并发度。
- 如果匹配到的限流规则的dop字段值大于或等于该规则允许的最大并发度,则进行限流:立即终止该SQL语句的执行,并报错提示用户。
- 当限流生效,或限流未生效SQL语句正常执行完毕时,将匹配到的限流规则的dop字段值减1。
接口介绍
SQL限流主要使用以下系统函数,具体描述请参见《参考》中“SQL参考 > 函数和操作符 > SQL限流函数”章节。
| 函数名 | 函数说明 |
|---|---|
| gs_add_workload_rule | 创建一条SQL限流规则。需要具有sysadmin权限的用户才可执行。 |
| gs_update_workload_rule | 更新一条SQL限流规则,需要重新设置全部参数,不支持只指定部分参数。需要具有sysadmin权限的用户才可执行。 |
| gs_delete_workload_rule | 删除一条SQL限流规则。需要具有sysadmin权限的用户才可执行。 |
| gs_get_workload_rule_stat | 查询SQL限流规则拦截SQL语句的次数。需要具有sysadmin权限的用户才可执行。 |
| gs_refresh_workload_rule_cache | 刷新限流规则缓存,使其与限流规则系统表保持一致。不支持在事务中执行。需要具有sysadmin权限的用户才可执行。 |