异步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,100表示不限速。 |
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 | 已添加的限流配置的access_key。 |
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) |

