天天看點

PostgreSQL修改參數

PostgreSQL資料庫的配置參數都在postgresql.conf檔案中,此檔案的目錄為資料庫的資料目錄($PGDATA)。這些參數有些是直接修改就可以生效,有些需要重新開機資料庫才能生效,而有些根本就不能修改。PG資料庫把這些參數分為以下幾類:

internal:這類參數為隻讀參數。有的是postgres程式寫死的,有些是在安裝資料庫時intdb時設定好的。

postmaster:這類參數需要重新開機資料庫才能生效。

sighup:不需要重新開機資料庫,但要向postmaster程序發送sighup信号,即需要pg_ctl reload指令。

backend:無需重新開機資料庫,隻需向postmaster程序發送sighup信号。但新的配置值隻能在之後的新連接配接中生效,已有連接配接中這些參數值不會改變。

superuser:這類參數可以由超級使用者使用set修改。參數設定後隻會影響超級使用者自身的session配置,不會影響其他使用者。

user:普通使用者使用set設定,這類參數修改後和superuser類參數一樣,也是隻影響自身session。

我們可以通過查詢pg_settings表的context字段值來檢視參數是否需要重新開機資料庫生效。如下:

$ psql

psql (13.3)

Type "help" for help.

postgres=#

postgres=# show log_statement;

 log_statement

---------------

 none

(1 row)

postgres=# select name,context from pg_settings where name='log_statement';

     name      |  context

---------------+-----------

 log_statement | superuser

postgres=# alter system set log_statement='mod';

ALTER SYSTEM

postgres=# select pg_reload_conf();

 pg_reload_conf

----------------

 t

postgres=# alter system set log_statement='none';

下一篇: pod

繼續閱讀