异步IO限流
异步IO限流功能仅9.1.1.200及以上集群版本支持。
obs_add_limit_config(access_key, bucket, metric, speed_ratio, expires_s)
描述:存算分离架构下通过添加限流配置来限制OBS请求,达到降低OBS指标的目的。
函数输入参数如下:
|
名称 |
类型 |
描述 |
|---|---|---|
|
access_key |
text |
用于访问OBS服务的access_key,添加时需要确保系统表PG_TABLESPACE中存在对应的OBS服务配置或者PG_FOREIGN_SERVER中存在对应的OBS服务配置。 |
|
bucket |
text |
访问的OBS桶,该字段可为空字符串,为空字符串时表示需要限制整个OBS租户。 |
|
metric |
text |
被限制的指标,指标包括:conn,read_tps,write_tps,list_tps,total_tps,read_bps,write_bps,total_bps。 |
|
speed_ratio |
bigint |
限速比例,该比例是相对不限速情况下的比值。取值范围为1~100,默认值为80。 |
|
expires_s |
bigint |
限速配置有效期。取值范围 1~3600 ,单位为秒, 默认值为60s。 |
返回值类型:record
函数返回字段如下:
|
名称 |
类型 |
描述 |
|---|---|---|
|
nodename |
text |
执行语句的节点名称。 |
|
result |
boolean |
限流配置是否添加成功。
|
示例:
添加限流配置来限制OBS请求。
XXXXXXXXXXXXX表示访问OBS服务的access_key,访问的OBS桶名为test, 被限制的指标conn, 限速比为80,限速配置的有效时间为100秒。使用时请根据业务需求替换为实际值。
1 2 3 4 5 6 |
SELECT * FROM obs_add_limit_config('XXXXXXXXXXXXX','test','conn','80','100'); nodename | result --------------+-------- coordinator1 | t (1 row) -- |
expires_s参数缺省时,表示限速配置的有效时间为默认值60秒。
1 2 3 4 5 |
SELECT * FROM obs_add_limit_config('XXXXXXXXXXXXX','test','conn','80'); nodename | result --------------+-------- coordinator1 | t (1 row) |
speed_ratio与expires_s参数缺省时,分别表示限速比为80,限速配置的有效时间为60秒。
1 2 3 4 5 |
SELECT * FROM obs_add_limit_config('XXXXXXXXXXXXX','test','conn'); nodename | result --------------+-------- coordinator1 | t (1 row) |
obs_delete_limit_config(access_key, bucket, metric)
描述:删除当前节点中的OBS限流配置。
函数输入参数如下:
|
名称 |
类型 |
描述 |
|---|---|---|
|
access_key |
text |
已添加的限流配置的access_key。 |
|
bucket |
text |
已添加的限流配置中的OBS桶名称。 |
|
metric |
text |
已添加的限流配置中的指标。 |
返回值类型:record
函数返回字段如下:
|
名称 |
类型 |
描述 |
|---|---|---|
|
nodename |
text |
执行语句的节点名称。 |
|
result |
boolean |
OBS限流配置是否删除成功。
|
示例:
删除当前节点中的OBS限流配置。
XXXXXXXXXXXXX表示访问OBS服务的access_key,访问的OBS桶名为test, 被限制的指标conn。使用时请根据业务需求替换为实际值。
1 2 3 4 5 |
SELECT * FROM obs_delete_limit_config('XXXXXXXXXXXXX','test','conn'); nodename | result --------------+-------- coordinator1 | t (1 row) |
obs_clear_limit_configs()
描述:清除当前节点中的所有OBS限流配置。
返回值类型:record
函数返回字段如下:
|
名称 |
类型 |
描述 |
|---|---|---|
|
nodename |
text |
执行语句的节点名称。 |
|
result |
boolean |
限流配置是否清理成功。
|
示例:
清除当前节点中的所有OBS限流配置。
1 2 3 4 5 |
SELECT * FROM obs_clear_limit_configs(); nodename | result --------------+-------- coordinator1 | t (1 row) |
obs_query_limit_configs()
描述:查询当前节点中的所有OBS限流配置。
返回值类型:record
函数返回字段如下:
|
名称 |
类型 |
描述 |
|---|---|---|
|
nodename |
text |
执行语句的节点名称。 |
|
access_key |
bool |
OBS限流配置是否删除成功。
|
|
bucket |
text |
OBS桶名称。 |
|
metric |
text |
被限制的指标。 |
|
speed_ratio |
bigint |
限速比例。 |
|
expires_s |
bigint |
限速配置的过期时间。 |
|
is_expired |
boolean |
限速配置是否过期。
|
|
expiration_time |
timestamp |
限速配置过期时间。 |
|
create_time |
timestamp |
限速配置首次添加时间。 |
|
update_time |
timestamp |
限速配置更新时间,如果已经存在,后续直接更新update_time。 |
示例:
查当前节点中的所有OBS限流配置。
查询显示名称为test的OBS桶,被限制的指标conn,其限速比为80,限速配置的过期时间为100秒,当前配置已过期,限速配置首次添加时间为2025-10-11 09:09:43+08等信息。
1 2 3 4 |
SELECT * FROM obs_query_limit_configs(); nodename | access_key | bucket | metric | speed_ratio | expires_s | is_expired | expiration_time | create_time | update_time --------------+----------------------+--------+--------+-------------+-----------+------------+------------------------+------------------------+------------------------ coordinator1 | xxxxxxxxxxxxxxxxxxxxx| test | conn | 80 | 100 | t | 2025-10-11 09:11:23+08 | 2025-10-11 09:09:43+08 | 2025-10-11 09:09:43+08 |
pgxc_obs_add_limit_config(target, access_key, bucket, metric, speed_ratio, expires_s)
描述:存算分离架构下通过添加限流配置来限制OBS请求,达到降低OBS指标的目的。
函数输入参数如下:
|
名称 |
类型 |
描述 |
|---|---|---|
|
target |
text |
目标节点,默认为all。取值如下:
|
|
access_key |
text |
用于访问OBS服务的access_key,添加时需要确保系统表PG_TABLESPACE中存在对应的OBS服务配置或者PG_FOREIGN_SERVER中存在对应的OBS服务配置。 |
|
bucket |
text |
访问的OBS桶,该字段可为空字符串,为空字符串时表示需要限制整个OBS租户。 |
|
metric |
text |
被限制的指标,指标包括:conn,read_tps,write_tps,list_tps,total_tps,read_bps,write_bps,total_bps。 |
|
speed_ratio |
bigint |
限速比例,该比例是相对不限速情况下的比值。取值范围为 1-100,默认值为 80。 |
|
expires_s |
bigint |
限速配置有效期。取值范围为1~3600,单位为秒, 默认值为60s。 |
返回值类型:record
函数返回字段如下:
|
名称 |
类型 |
描述 |
|---|---|---|
|
total_instances |
int |
执行添加配置的节点总数。 |
|
success_instances |
int |
添加限流配置成功的节点数量。 |
|
failed_instances |
int |
添加限流配置失败的节点数量。 |
|
failed_nodes |
text |
添加限流配置失败的节点,会显示添加限流配置失败的具体节点信息。 |
示例:
1 2 3 4 5 |
SELECT * FROM pgxc_obs_add_limit_config('all','XXXXXXXXXXXX','test','conn', 70, 1200); total_instances | success_instances | failed_instances | failed_nodes -----------------+-------------------+------------------+-------------- 4 | 4 | 0 | (1 row) |
expires_s参数缺省时,表示限速配置的有效时间为默认值60秒。
1 2 3 4 5 |
select * from pgxc_obs_add_limit_config('all','XXXXXXXXXXXX','test','conn', 70); total_instances | success_instances | failed_instances | failed_nodes -----------------+-------------------+------------------+-------------- 4 | 4 | 0 | (1 row) |
speed_ratio与expires_s参数缺省时,分别表示限速比为80,限速配置的有效时间为60秒。
1 2 3 4 5 |
SELECT * FROM pgxc_obs_add_limit_config('all','XXXXXXXXXXXX','test','conn'); total_instances | success_instances | failed_instances | failed_nodes -----------------+-------------------+------------------+-------------- 4 | 4 | 0 | (1 row) |
pgxc_obs_delete_limit_config(target,access_key, bucket, metric)
描述:批量删除目标节点中的限流配置。
函数输入参数如下:
|
名称 |
类型 |
描述 |
|---|---|---|
|
target |
text |
目标节点,默认为all。取值如下:
|
|
access_key |
text |
已添加的限流配置的access_key。 |
|
bucket |
text |
已添加的限流配置中的bucket。 |
|
metric |
text |
已添加的限流配置中的指标。 |
返回值类型:record
函数返回字段如下:
|
名称 |
类型 |
描述 |
|---|---|---|
|
total_instances |
int |
执行删除配置的节点总数。 |
|
success_instances |
int |
删除成功的节点数量。 |
|
failed_instances |
int |
删除失败的节点数量。 |
|
failed_nodes |
text |
删除失败的节点,显示删除失败的具体节点信息。 |
示例:
1 2 3 4 5 |
SELECT * FROM pgxc_obs_delete_limit_config('all','XXXXXXXXXXXX','test','conn'); total_instances | success_instances | failed_instances | failed_nodes -----------------+-------------------+------------------+-------------- 4 | 4 | 0 | (1 row) |
pgxc_obs_clear_limit_configs(target)
描述:批量清除目标节点的所有OBS限流配置。
函数输入参数:target,类型:text,表示目标节点,默认为all。取值如下:
- all,表示所有节点。
- cn,表示全部CN节点。
- coordinator,表示全部CN节点。
- dn,表示全部DN节点。
- datanode,表示全部DN节点。
返回值类型:record
函数返回字段如下:
|
名称 |
类型 |
描述 |
|---|---|---|
|
total_instances |
int |
执行清理配置的节点总数。 |
|
success_instances |
int |
清除成功的节点数量。 |
|
failed_instances |
int |
清除失败的节点数量。 |
|
failed_nodes |
text |
清除失败的节点,显示清除失败的具体节点信息。 |
示例:
清除所有节点的所有OBS限流配置。
1 2 3 4 5 |
SELECT * FROM pgxc_obs_clear_limit_configs('all'); total_instances | success_instances | failed_instances | failed_nodes -----------------+-------------------+------------------+-------------- 4 | 4 | 0 | (1 row) |
target参数缺省时,默认清除所有节点的所有OBS限流配置。
1 2 3 4 5 |
SELECT * FROM pgxc_obs_clear_limit_configs(); total_instances | success_instances | failed_instances | failed_nodes -----------------+-------------------+------------------+-------------- 4 | 4 | 0 | (1 row) |
pgxc_obs_query_limit_configs(target)
描述:查询目标节点中的所有限流配置。
函数输入参数:target,类型:text,表示目标节点,默认为all。取值如下:
- all,表示所有节点。
- cn,表示全部CN节点。
- coordinator,表示全部CN节点。
- dn,表示全部DN节点。
- datanode,表示全部DN节点。
返回值类型:record
函数返回字段如下:
|
名称 |
类型 |
描述 |
|---|---|---|
|
nodename |
text |
执行语句的节点名称。 |
|
access_key |
bool |
限流配置是否删除成功。
|
|
bucket |
text |
OBS桶名称。 |
|
metric |
text |
被限制的指标。 |
|
speed_ratio |
bigint |
限速比例。 |
|
expires_s |
bigint |
限速配置的过期时间。 |
|
is_expired |
boolean |
限速配置是否过期。
|
|
expiration_time |
timestamp |
限速配置的过期时间。 |
|
create_time |
timestamp |
限速配置首次添加时间。 |
|
update_time |
timestamp |
限速配置更新时间,如果已经存在,后续直接更新update_time。 |
示例:
查询所有节点中的所有限流配置。
1 2 3 4 5 6 7 8 |
SELECT * FROM pgxc_obs_query_limit_configs('all'); nodename | access_key | bucket | metric | speed_ratio | expires_s | is_expired | expiration_time | create_time | update_time --------------+----------------------+----------------+--------+-------------+-----------+------------+------------------------+------------------------+------------------------ datanode3 | XXXXXXXXXXXXX | test | conn | 70 | 1200 | f | 2025-10-11 10:07:37+08 | 2025-10-11 09:47:37+08 | 2025-10-11 09:47:37+08 datanode2 | XXXXXXXXXXXXX | test | conn | 70 | 1200 | f | 2025-10-11 10:07:37+08 | 2025-10-11 09:47:37+08 | 2025-10-11 09:47:37+08 datanode1 | XXXXXXXXXXXXX | test | conn | 70 | 1200 | f | 2025-10-11 10:07:37+08 | 2025-10-11 09:47:37+08 | 2025-10-11 09:47:37+08 coordinator1 | XXXXXXXXXXXXX | test t| conn | 70 | 1200 | f | 2025-10-11 10:07:37+08 | 2025-10-11 09:47:37+08 | 2025-10-11 09:47:37+08 (4 rows) |
未指定函数入参target,即使用默认值查询节点中的所有限流配置。
1 2 3 4 5 6 7 8 |
SELECT * FROM pgxc_obs_query_limit_configs(); nodename | access_key | bucket | metric | speed_ratio | expires_s | is_expired | expiration_time | create_time | update_time --------------+----------------------+----------------+--------+-------------+-----------+------------+------------------------+------------------------+------------------------ datanode3 | XXXXXXXXXXXXX | test | conn | 70 | 1200 | f | 2025-10-11 10:07:37+08 | 2025-10-11 09:47:37+08 | 2025-10-11 09:47:37+08 datanode2 | XXXXXXXXXXXXX | test | conn | 70 | 1200 | f | 2025-10-11 10:07:37+08 | 2025-10-11 09:47:37+08 | 2025-10-11 09:47:37+08 datanode1 | XXXXXXXXXXXXX | test | conn | 70 | 1200 | f | 2025-10-11 10:07:37+08 | 2025-10-11 09:47:37+08 | 2025-10-11 09:47:37+08 coordinator1 | XXXXXXXXXXXXX | test t| conn | 70 | 1200 | f | 2025-10-11 10:07:37+08 | 2025-10-11 09:47:37+08 | 2025-10-11 09:47:37+08 (4 rows) |
查询所有DN节点中的所有限流配置。
1 2 3 4 5 6 7 |
SELECT * FROM pgxc_obs_query_limit_configs('dn'); nodename | access_key | bucket | metric | speed_ratio | expires_s | is_expired | expiration_time | create_time | update_time --------------+----------------------+----------------+--------+-------------+-----------+------------+------------------------+------------------------+------------------------ datanode3 | XXXXXXXXXXXXX | test | conn | 70 | 1200 | f | 2025-10-11 10:07:37+08 | 2025-10-11 09:47:37+08 | 2025-10-11 09:47:37+08 datanode2 | XXXXXXXXXXXXX | test | conn | 70 | 1200 | f | 2025-10-11 10:07:37+08 | 2025-10-11 09:47:37+08 | 2025-10-11 09:47:37+08 datanode1 | XXXXXXXXXXXXX | test | conn | 70 | 1200 | f | 2025-10-11 10:07:37+08 | 2025-10-11 09:47:37+08 | 2025-10-11 09:47:37+08 (3 rows) |
查询所有CN节点中的所有限流配置。
1 2 3 4 5 |
SELECT * FROM pgxc_obs_query_limit_configs('cn'); nodename | access_key | bucket | metric | speed_ratio | expires_s | is_expired | expiration_time | create_time | update_time --------------+----------------------+----------------+--------+-------------+-----------+------------+------------------------+------------------------+------------------------ coordinator1 | XXXXXXXXXXXXX | test t | conn | 70 | 1200 | f | 2025-10-11 10:07:37+08 | 2025-10-11 09:47:37+08 | 2025-10-11 09:47:37+08 (1 rows) |