如何无需登录目标库,通过视图查看PostgreSQL指定库的work_mem配置值?
无需登录目标数据库查看PostgreSQL数据库级work_mem设置
你可以通过pg_db_role_setting系统视图来查询指定数据库的自定义参数配置,无需登录到目标库。这个视图存储了数据库和角色级别的参数覆盖设置。
方法1:直接使用函数查询
PostgreSQL提供了pg_get_database_setting()函数,可以直接获取指定数据库的某个参数值,用法如下:
SELECT pg_get_database_setting('test', 'work_mem');
执行这条语句后会直接返回test数据库的work_mem设置值(比如128MB)。
方法2:通过系统视图关联查询
如果需要查看该数据库的所有自定义参数,或者更灵活地过滤,可以关联pg_database和pg_db_role_setting视图:
SELECT d.datname, unnest(rs.setting) AS config_item FROM pg_db_role_setting rs JOIN pg_database d ON rs.setdatabase = d.oid WHERE d.datname = 'test' AND unnest(rs.setting) LIKE 'work_mem=%';
这条语句会列出test数据库中所有和work_mem相关的配置项(通常只有你设置的那一条)。
注意事项
- 执行查询的用户需要具备足够的权限,比如拥有
pg_read_all_settings角色,或者被授予了查询这些系统视图的权限。 - 如果该数据库没有自定义的
work_mem设置,上述查询会返回空结果,此时参数使用系统级的默认值。
内容的提问来源于stack exchange,提问作者Rajat Sanwal
相关产品推荐
相关产品推荐

