PostgreSQL常见参数
listen_addresses = '172.16.3.57' #监听的地址
max_connections = 1024 #最大连接数
port = 5432 #监听的端口
shared_buffers = 4G #类似Oracle SGA
work_mem = 1G #类似Oracle PGA,增加可以提高排序的效率
huge_pages = try #尝试使用Huge Page管理内存
动态设置参数:
Alter Database 允许在单个数据库级别修改参数来覆盖全局参数.
Alter Role 允许数据库使用用户特定参数覆盖全局和单个数据库级别参数.
1) 查看参数:
查看某个参数:
mydb=# show shared_buffers;
shared_buffers
----------------
128MB
(1 row)
查看全部参数:
mydb=# show all;
** pg_setting视图可以用来查看和修改会话级别的参数. **
2) 变更参数:
SET [ SESSION | LOCAL ] configuration_parameter { TO | = } { value | 'value' | DEFAULT }
SESSION: 对当前会话生效,如果不写Session或者Local,默认就是Session.
LOCAL: 仅仅对当前Transaction有效,在ROLLBACK或者COMMIT之后则无效.
修改pg_settings和使用SET的效果相同, 但是pg_setting可以提供更加详细的参数信息.
mydb=# select name ,setting
mydb-# from pg_settings
mydb-# where name = 'shared_buffers';
name | setting
----------------+---------
shared_buffers | 16384 ==> 128MB
(1 row)
update pg_settings set settings=value where name='parameter_name';
需要重新启动生效的参数:
mydb=# set session shared_buffers = 20000;
ERROR: parameter "shared_buffers" cannot be changed without restarting the server
3) 启动DB时指定参数
postgres -c para_name1='' -c para_name2=''
4) 参数文件管理
include_dir 'conf.d'
在$PGDATA/conf.d/下的文件应该有优先级顺序,数字越大优先级越高,会覆盖之前相同的参数设置.
00shared.conf
01memory.conf
02server.conf ==> 最后读取并覆盖之前相同的参数.
include_file 'memory.conf' 在$PGDATA文件下.
5) 其他文件管理
数据文件位置: data_directory指定了数据文件的存放位置.
参数文件位置: 使用postgres命令时可以使用该参数-c config_file,用于指定参数文件的位置,方便参数文件的管理.
其他三种文件查看PostgreSQL 9.6 Chapter 19.2
注意: 如果指定参数文件路径, 请设置hba_file和ident_file参数, 否则找不到这两个文件(默认到$PGDATA找)
修改后的启动语句:
postgres -c config_file=/home/postgres/postgresql.conf -D /opt/postgresql-9.6.9/data > ~/pg_start_log/start_`date +%Y-%m-%d-%H:%M:%S`.log 2>&1 &
port = 5432
max_connections = 1024
shared_buffers = 4GB
work_mem = 1GB
huge_pages = try
dynamic_shared_memory_type = posix
logging_collector = on
log_directory = '/home/postgres/pg_error_log'
log_filename = 'pg-Port5432-%Y-%m-%d_%H%M%S.log'
log_truncate_on_rotation = off
log_rotation_age = 1d
log_timezone = 'PRC'
datestyle = 'iso, mdy'
timezone = 'PRC'
lc_messages = 'en_US.UTF-8'
lc_monetary = 'en_US.UTF-8'
lc_numeric = 'en_US.UTF-8'
lc_time = 'en_US.UTF-8'
default_text_search_config = 'pg_catalog.english'
constraint_exclusion = 'partition'
listen_addresses = '172.16.3.57' #监听的地址
max_connections = 1024 #最大连接数
port = 5432 #监听的端口
shared_buffers = 4G #类似Oracle SGA
work_mem = 1G #类似Oracle PGA,增加可以提高排序的效率
huge_pages = try #尝试使用Huge Page管理内存
动态设置参数:
Alter Database 允许在单个数据库级别修改参数来覆盖全局参数.
Alter Role 允许数据库使用用户特定参数覆盖全局和单个数据库级别参数.
1) 查看参数:
查看某个参数:
mydb=# show shared_buffers;
shared_buffers
----------------
128MB
(1 row)
查看全部参数:
mydb=# show all;
** pg_setting视图可以用来查看和修改会话级别的参数. **
2) 变更参数:
SET [ SESSION | LOCAL ] configuration_parameter { TO | = } { value | 'value' | DEFAULT }
SESSION: 对当前会话生效,如果不写Session或者Local,默认就是Session.
LOCAL: 仅仅对当前Transaction有效,在ROLLBACK或者COMMIT之后则无效.
修改pg_settings和使用SET的效果相同, 但是pg_setting可以提供更加详细的参数信息.
mydb=# select name ,setting
mydb-# from pg_settings
mydb-# where name = 'shared_buffers';
name | setting
----------------+---------
shared_buffers | 16384 ==> 128MB
(1 row)
update pg_settings set settings=value where name='parameter_name';
需要重新启动生效的参数:
mydb=# set session shared_buffers = 20000;
ERROR: parameter "shared_buffers" cannot be changed without restarting the server
3) 启动DB时指定参数
postgres -c para_name1='' -c para_name2=''
4) 参数文件管理
include_dir 'conf.d'
在$PGDATA/conf.d/下的文件应该有优先级顺序,数字越大优先级越高,会覆盖之前相同的参数设置.
00shared.conf
01memory.conf
02server.conf ==> 最后读取并覆盖之前相同的参数.
include_file 'memory.conf' 在$PGDATA文件下.
5) 其他文件管理
数据文件位置: data_directory指定了数据文件的存放位置.
参数文件位置: 使用postgres命令时可以使用该参数-c config_file,用于指定参数文件的位置,方便参数文件的管理.
其他三种文件查看PostgreSQL 9.6 Chapter 19.2
注意: 如果指定参数文件路径, 请设置hba_file和ident_file参数, 否则找不到这两个文件(默认到$PGDATA找)
修改后的启动语句:
postgres -c config_file=/home/postgres/postgresql.conf -D /opt/postgresql-9.6.9/data > ~/pg_start_log/start_`date +%Y-%m-%d-%H:%M:%S`.log 2>&1 &
参考参数文件(后期继续补充):
listen_addresses = '172.16.3.57'port = 5432
max_connections = 1024
shared_buffers = 4GB
work_mem = 1GB
huge_pages = try
dynamic_shared_memory_type = posix
logging_collector = on
log_directory = '/home/postgres/pg_error_log'
log_filename = 'pg-Port5432-%Y-%m-%d_%H%M%S.log'
log_truncate_on_rotation = off
log_rotation_age = 1d
log_timezone = 'PRC'
datestyle = 'iso, mdy'
timezone = 'PRC'
lc_messages = 'en_US.UTF-8'
lc_monetary = 'en_US.UTF-8'
lc_numeric = 'en_US.UTF-8'
lc_time = 'en_US.UTF-8'
default_text_search_config = 'pg_catalog.english'
constraint_exclusion = 'partition'