
# 操作指导
#### 前提条件
- GaussDB版本 ≥ 505.0.0。
- 需要具有sysadmin权限的用户执行以下操作。
 
#### 示例
```
-- 创建根据Unique SQL ID进行限流，且规则名称为rule_1、Unique SQL ID为844424930505717、最大并发度为10、立即生效的SQL限流规则。
gaussdb=# SELECT gs_add_workload_rule('sqlid', 'rule_1', '{}', NULL, NULL, 10, '{id=844424930505717}');
 gs_add_workload_rule 
----------------------
                    1
(1 row)
-- 创建根据SQL类型及关键字进行限流，且SQL类型为select、数据库为postgres和tpcc、关键字为group by和join、最大并发度为1、指定生效时间段的SQL限流规则。
gaussdb=# SELECT gs_add_workload_rule('select', 'rule_2', '{postgres, tpcc}', '2026-01-01 00:00:00', '2026-01-02 00:00:00', '1', '{group by, join}');
 gs_add_workload_rule 
----------------------
                    2
(1 row)
-- 创建根据系统资源进行限流，且当CPU使用率大于60%，同时内存使用率大于80%时生效、最大并发度为10的SQL限流规则。
gaussdb=# SELECT gs_add_workload_rule('resource', 'rule_3', '{}', NULL, NULL, '10', '{cpu-60, memory-80}');
 gs_add_workload_rule 
----------------------
                    3
(1 row)
-- 创建根据客户端ApplicationName进行限流，且规则名称为rule_4、ApplicationName为app1、最大并发度为20、立即生效的SQL限流规则。
gaussdb=# SELECT gs_add_workload_rule('client', 'rule_4', '{}', NULL, NULL, 20, '{appname=app1}');
 gs_add_workload_rule 
----------------------
                    4
(1 row)
-- 修改rule_id为1的SQL限流规则（该规则类型为根据Unique SQL ID进行限流），修改Unique SQL ID为676844332506578、最大并发度为20、生效时间为指定时间段。
gaussdb=# SELECT gs_update_workload_rule(1, 'rule_1', '{}', '2026-01-01 00:00:00', '2026-01-02 00:00:00', 20, '{id=676844332506578}');
 gs_update_workload_rule 
-------------------------
 t
(1 row)
-- 刷新限流规则缓存。
gaussdb=# SELECT gs_refresh_workload_rule_cache();
 gs_refresh_workload_rule_cache 
--------------------------------
 t
(1 row)
-- 查询rule_id为1的SQL限流规则的统计信息。
gaussdb=# SELECT * from gs_get_workload_rule_stat(1);
 rule_id | validate_count 
---------+----------------
       1 |              0
(1 row)
-- 查询全部SQL限流规则的统计信息。
gaussdb=# SELECT * from gs_get_workload_rule_stat(-1);
 rule_id | validate_count 
---------+----------------
       1 |              0
       2 |              0
       3 |              0
       4 |              0
(4 rows)
-- 删除rule_id为1的SQL限流规则。
gaussdb=# SELECT gs_delete_workload_rule(1);
 gs_delete_workload_rule 
-------------------------
 t
(1 row)
-- 删除全部SQL限流规则。
gaussdb=# SELECT gs_delete_workload_rule(rule_id) FROM gs_workload_rule;
 gs_delete_workload_rule 
-------------------------
 t
 t
 t
(3 rows)
```
