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

如何通过SQL查询指定表的autovacuum_vacuum_scale_factor等配置选项

查询指定表autovacuum_vacuum_scale_factor参数的SQL方法

你不需要依赖psql的\d+命令,直接查PostgreSQL系统表就能拿到对应配置,分两种使用场景:

查询表级自定义配置

如果表单独设置过autovacuum相关参数,配置会存在系统表pg_class的reloptions字段中,执行以下SQL即可查询:

SELECT
  relname AS table_name,
  (pg_options_to_table(reloptions)).*
FROM pg_class
WHERE
  relname = '<替换为你的目标表名>'
  AND relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = '<替换为表所在的schema,默认填public>');
  • 如果返回结果中存在autovacuum_vacuum_scale_factor对应的config_value,就是该表单独设置的参数值
  • 如果结果中没有对应条目,说明该表没有单独配置该参数,运行时会使用全局默认值

查询实际生效的参数值

如果需要直接拿到当前表运行时实际生效的参数值(自动判断是表级自定义值还是全局默认值),可以用以下SQL:

WITH target_table AS (
  SELECT oid, relname, reloptions
  FROM pg_class
  WHERE
    relname = '<替换为你的目标表名>'
    AND relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = '<替换为表所在的schema,默认填public>')
)
SELECT
  relname AS scope,
  config_name,
  config_value
FROM (
  SELECT
    relname,
    (pg_options_to_table(reloptions)).*
  FROM target_table
  WHERE reloptions @> ARRAY['autovacuum_vacuum_scale_factor']::text[]
) t
UNION ALL
SELECT
  '全局默认' AS scope,
  name AS config_name,
  setting AS config_value
FROM pg_settings
WHERE name = 'autovacuum_vacuum_scale_factor'
  AND NOT EXISTS (SELECT 1 FROM target_table WHERE reloptions @> ARRAY['autovacuum_vacuum_scale_factor']::text[]);

补充说明:

  • 如果需要查询库下所有表的该参数配置,去掉SQL中对relname的过滤条件即可
  • 以上SQL普通查询权限的用户即可执行,不需要超级用户权限
  • psql客户端的\d+命令本质也是封装了对上述系统表的查询,只是做了格式化展示

内容的提问来源于stack exchange,提问作者Matías Santurio

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 09:24:18