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

操作指导

前提条件

  • GaussDB版本 ≥ 505.0.0。
  • 需要具有sysadmin权限的用户执行以下操作。

示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
-- 创建根据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)

相关文档