更新时间: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) |
父主题: SQL限流