You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过SQL获取PostgreSQL的recovery_min_apply_delay参数值?

获取PostgreSQL recovery_min_apply_delay值的SQL方法

你可以通过两种方式直接在SQL中获取recovery_min_apply_delay的配置值:

方法1:查询pg_settings系统视图

这是PostgreSQL存储所有配置参数的系统视图,直接查询即可:

-- 获取原始配置值和单位
SELECT setting, unit FROM pg_settings WHERE name = 'recovery_min_apply_delay';

-- 转换为秒数
SELECT EXTRACT(EPOCH FROM pg_parse_interval(setting)) AS recovery_min_apply_delay_seconds
FROM pg_settings WHERE name = 'recovery_min_apply_delay';

方法2:使用current_setting()函数

直接调用函数获取参数值,再转换为可计算的间隔类型:

SELECT EXTRACT(EPOCH FROM pg_parse_interval(current_setting('recovery_min_apply_delay'))) AS recovery_min_apply_delay_seconds;

整合到你的延迟查询中

把参数获取逻辑嵌入到你原来的Prometheus监控查询里,最终的SQL如下:

SELECT 
  CASE 
    WHEN NOT pg_is_in_recovery() THEN 0 
    ELSE GREATEST (0, EXTRACT(EPOCH FROM (
      now() - pg_last_xact_replay_timestamp() - pg_parse_interval(current_setting('recovery_min_apply_delay'))
    ))) 
  END AS lag;

注意事项

  • 如果recovery_min_apply_delay未手动设置(默认值为0),pg_parse_interval('0')会自动转换为0间隔,查询结果和原始逻辑保持一致,不会出错。
  • pg_parse_interval支持所有PostgreSQL合法的间隔格式(比如2h、1d30m等),能自动处理不同单位的配置值。

内容的提问来源于stack exchange,提问作者Vladimir Buyanov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 23:01:10