可以通过以下SQL可以查出有哪些参数类型:postgres@:5432/postgres-2266#=select distinct context from pg_settings; context
-----------------
postmaster
superuser-backend
user
internal
backend
sighup
superuser
(7 rows)
下面来看看官方是怎么定义的:
internal这些设置不能直接更改;它们反映了内部确定的价值观。其中一些可以通过使用不同的配置选项重建服务器或更改提供给initdb 的选项来调整。 postmaster这些设置只能在服务器启动时应用,因此任何更改都需要重新启动服务器。这些设置的值通常存储在文件中postgresql.conf,或在启动服务器时通过命令行传递。当然,context也可以在服务器启动时设置任何较低类型的设置。 sighuppostgresql.conf无需重新启动服务器即可更改这些设置。向 postmaster发送SIGHUP信号,使其重新读取postgresql.conf并应用更改。postmaster 还将SIGHUP信号转发给其子进程,以便它们都获取新值。 superuser-backendpostgresql.conf无需重新启动服务器即可更改这些设置。它们还可以在连接请求数据包中为特定会话设置(例如,通过libpq的PGOPTIONS环境变量),但前提是连接用户是超级用户或已被授予适当的SET权限。但是,这些设置在会话启动后永远不会更改。如果您更改它们postgresql.conf,请向 postmaster 发送SIGHUP信号以使其重新读取postgresql.conf。新值只会影响后续启动的会话。 backendpostgresql.conf无需重新启动服务器即可更改这些设置。它们还可以在连接请求数据包中为特定会话设置(例如,通过libpq的PGOPTIONS环境变量);任何用户都可以对其会话进行此类更改。但是,这些设置在会话启动后永远不会更改。如果您更改它们postgresql.conf,请向 postmaster 发送SIGHUP信号以使其重新读取postgresql.conf。新值只会影响后续启动的会话。 superuser这些设置可以从postgresql.conf或在会话中通过SET命令进行设置;但只有超级用户和具有适当SET权限的用户才能通过 更改它们SET。postgresql.conf仅当未使用 建立会话本地值时,中的更改才会影响现有会话SET。 userpostgresql.conf这些设置可以通过命令从 或在会话中设置SET。任何用户都可以更改其会话本地值。postgresql.conf仅当未使用 建立会话本地值时,中的更改才会影响现有会话SET。
|