PG修改參數方法


1.查看參數文件位置

postgres=# show config_file;
           config_file            
----------------------------------
 /data/pgsql_data/postgresql.conf
(1 row)

postgres=# show hba_file;
           hba_file           
------------------------------
 /data/pgsql_data/pg_hba.conf
(1 row)

postgres=# show ident_file;
           ident_file           
--------------------------------
 /data/pgsql_data/pg_ident.conf
(1 row)

2.查看當前會話參數

show all;
postgres=# show enable_hashjoin;
 enable_hashjoin 
-----------------
 on
(1 row)
postgres=# \x
Expanded display is on.
postgres=# select * from pg_settings where name in ('enable_hashjoin');
-[ RECORD 1 ]---------------------------------------------
name       | enable_hashjoin
setting    | on
unit       | 
category   | Query Tuning / Planner Method Configuration
short_desc | Enables the planner's use of hash join plans.
extra_desc | 
context    | user
vartype    | bool
source     | default
min_val    | 
max_val    | 
enumvals   | 
boot_val   | on
reset_val  | on
sourcefile | 
sourceline | 

3.修改參數值

3.1全局修改pg的參數.
  • 1.alter system 命令修改參數.使用alter system命令將修改postgresql.auto.conf文件,而不是postgresql.conf,這樣可以很好的保護postgresql.conf文件,加入你使用很多alter system命令后搞的一團糟,那么你只需要刪除postgresql.auto.conf,再重新加
postgres=# show work_mem;
-[ RECORD 1 ]-
work_mem | 4MB

postgres=# alter system set work_mem='8MB';
ALTER SYSTEM
postgres=# show work_mem;
-[ RECORD 1 ]-
work_mem | 4MB

[postgres@mysql56 pgsql_data]$ cat postgresql.auto.conf 
# Do not edit this file manually!
# It will be overwritten by ALTER SYSTEM command.
work_mem = '8MB'
3.2修改會話級參數

使用set命令,在會話層修改,修改之后將被用於未來的每一個事務,只對當前會話有效

postgres=# set work_mem='16MB';
SET
postgres=# show work_mem;
-[ RECORD 1 ]--
work_mem | 16MB
postgres=# set session work_mem='32MB';
SET
3.3添加local關鍵字,只在當前事務中修改,只在當前事務內有效:
postgres=# show work_mem;
-[ RECORD 1 ]--
work_mem | 32MB

postgres=# begin;
BEGIN
postgres=# set local work_mem='8MB';
SET
postgres=# show work_mem;
-[ RECORD 1 ]-
work_mem | 8MB

postgres=# commit;
COMMIT
postgres=# show work_mem;
-[ RECORD 1 ]--
work_mem | 32MB

postgres=# 
4.reset回復默認值
postgres=# show work_mem;
-[ RECORD 1 ]--
work_mem | 32MB

postgres=# reset work_mem;
RESET
postgres=# show work_mem;
-[ RECORD 1 ]-
work_mem | 4MB

# reset all回復所有默認值
5.為特定的數據庫里的所有的用戶設置參數,例如為test數據庫所有的連接設置work_mem為16MB:
postgres=# alter database bluemoon set work_mem='16MB';
ALTER DATABASE
6.為數據庫中的某個特定用戶設置參數.例如為brent用戶,設置work_mem為2MB:
postgres=# alter role bluemoon set work_mem='2MB';
ALTER ROLE
# 數據庫中與用戶粒度為准
7.當前的參數值是從何處指定,可以通過查詢pg_setttings中的source字段獲取
postgres=# select name,setting,source from pg_settings where name='work_mem';
-[ RECORD 1 ]-----
name    | work_mem
setting | 4096
source  | default

  • archive_command
archive_command = 'DATE=`date +%Y%m%d`; DIR="/mysqldata/pg/pgarch/$DATE; (test -d $DIR||mkdir -p $DIR)&&cp %p $DIR/%f"'
# %p代表的是相對目錄$PGDATA下的pg_xlog, %f代表的是文件名


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM