首页 > 数据库 > PostgreSQL > PostgreSQL:参数简介
该文件是 PostgreSQL 的参数文件,该文件中配置了 PostgreSQL 启动所读取的初始化参数,如果没有指定初始化参数,使用默认的初始化参数启动。类似于 Oracle 中的初始化参数文件。
internal:这些参数是只读参数,其中有些参数是 postgres 程序写死的,或者使用一些不同的编辑选项确定的;有些参数是数据库实例初始化时就确定了的,之后就不能再改变此参数值了。这类参数值不能配置在 postgresql.conf 中,因为它们是由 postgres 程序和在初始化实例时写死的。
postmaster:改变这些参数值需要重启 PostgreSQL 实例。在 postgresql.conf 文件中改变这些参数后,需要重启 PostgreSQL 实例才能生效。
sighup:在 posgtresql.conf 文件中可改变这些参数的值,不需要重启数据库,只需要向 postmaster 进程发送 SIGHUP 信号,让其重启配置新的参数值就可以了。postmaster 进程接收到 SIGHUP 信号后,也会向它的子进程发送 SIGHUP 信号,让新的参数值在所有的进程中都生效。
backend:在 postgresql.conf 更改这些设置无需重启服务器,只需要 postmaster 发送一个 SIGHUP 信号,让它重新读取 postgresql.conf 中新的配置值即可,但新的配置值只会出现在这之后的新连接中,在已有的连接中,这些参数的值不会改变。这些参数的值也可以在新连接时,由连接的一些参数改变。
superuser:这类参数可以由超级用户使用 set 来改变。而超级用户改变参数值时,只会影响自身的 session 配置,不会影响其他用户。向 postmaster 进程发送 SIGHUP 信号,也只会影响后续建的连接,不会影响现有的连接。
user:普通用户可使用 set 命令通过此类参数来改变本连接中的配置值。除了普通用户都可以改变外,这类参数与 superuser 类参数没有区别。
全局配置修改
修改 postgresql.conf 配置文件(用于永久修改,需要重启数据库)
通过 ALTER SYSTEM 命令修改
ALTER SYSTEM SET listen_addresses='*';
会自动编辑 postgresql.auto.conf 文件,在数据库启动时会加载此文件,并用它的配置覆盖 postgresql.conf 中已有的配置(不要手动修改它)
非全局配置修改
DATABASE 级别
ALTER DATABASE <库名> SET listen_addresses='*'; ALTER DATABASE <库名> RESET listen_addresses
SESSION 级别
SET 命令
SET listen_addresses='*'; SET listen_addresses TO DEFAULT;
PG_SETTINGS 视图
UPDATE `pg_settings` SET setting = '*' WHERE name = 'listen_addresses'
set_config
SELECT set_config('configparameter',new_value,false)
ROLE 级别
ALTER ROLE <角色名> IN DATABASE <库名> SET listen_addresses='*'; ALTER ROLE <角色名> IN DATABASE <库名> RESET listen_addresses
数据字典查看
SELECT name,setting FROM pg_settings WHERE name ~ 'xxx'; SELECT current_setting(name);
show all
pg_ctl -D /pgdata/10/data reload
SELECT pg_reload_conf()
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31490526/viewspace-2742274/,如需转载,请注明出处,否则将追究法律责任。