postgresql server configuration

1.postgres=# select distinct(context) from pg_settings;
  context   
------------
 backend  --类似于sighup,更改后不会影响正在连接的会话,修改之后的新会话才会采用修改的值,这类参数很少,如log_connections
 user       --修改当前会话的参数,只在该会话生效
 internal             --数据库内部的参数,不重新编译安装不能更改,比如block_size,server_version等等。
 postmaster      --修改后,需要重启完成配置,比如shared memory
 superuser        --要修改此类参数,需要superuser,postgres用户操作
 sighup             --reload postgresql.conf就可以,修改的参数立即就会激活

三种方法重载配置文件:

1.postgres=# SELECT pg_reload_conf();
pg_reload_conf
----------------
t

2.$ ps -eaf | grep "postgres -D"
postgres 11185 1 0 22:21 pts/0 00:00:00 /home/postgres/inst/bin/postgres -D /home/postgres/data/
$ kill -HUP 11185

3.修改后,pg_ctl reload

介绍一下数据库日常设置的一些参数:

数据库连接参数:

listen_addresses = '*':数据库监听地址,设置为*表示可以监听所有IP的用户请求,比如修改为localhost,那么就只监听本地的连接请求,一般这个参数不去修改,因为有hba_conf可以做限制

max_connections:数据库的最大连接数,默认是100

superuser_reserved_connections:保留连接数,max_connections-superuser_reserved_connections,结果及时最大并发连接数。

共享内存参数:

shared_buffers:这个参数修改的话,那么需要重启数据库,共享内存,至于设置多大,这里不做研究。

log_line_prefix:日志格式参数,例如:log_line_prefix='%t:%r:%u@%d:[%p]: ',默认是空值

%t: Timestamp
%u: Database user name
%r: Remote host connection is from
%d: Database connection is to
%p: Process ID of connection

log_statement:空值记录语句的执行信息,可以设置4个值,none不记录任何语句的信息,ddl记录create,drop,alter,mod模式记录包括所有的ddl,还有数据变化的一些语句,比如更新,删除之类的,all记录所有语句。

log_min_duration_statement:记录超过这个时间值的SQL到log,默认是1000ms,-1是关闭,0是记录所有的SQL到log。

Vacuuming and statistics 的相关参数:

autovacuum:控制是否打开vacuum功能,默认on。

autovacuum_max_workers:最大autovacuum进程数

#autovacuum_naptime = 1min              # time between autovacuum runs   ---时间间隔
#autovacuum_vacuum_threshold = 50       --autovacuum操作的阀值,比如表的更改和删除超过这个值,那么进行vacuum。
#autovacuum_analyze_threshold = 50      # 同上。这里是触发analyze的值

#autovacuum_vacuum_scale_factor = 0.2  默认0.2,DML涉及的数据量超过20%也就是0.2,那么vacuum

#autovacuum_analyze_scale_factor = 0.1  # 同上,只不过是analyze操作

#autovacuum_freeze_max_age = 200000000  # 为防止事务ID的重置,在启用vacuum操作之前,表的pg_class .relfrozenxid字段的最大值,默认为200万

#autovacuum_vacuum_cost_delay = 20ms     # autovauum进程时间延迟参数

#autovacuum_vacuum_cost_limit = -1      # autovauum进程开销延迟参数,-1表示不进行开销限制

default_statistics_target:加大这个值,会加长analyze的时间,而且会增加数据库后台维护的开销,但是如果这个值太小,那么可能会得到一个差的执行计划。8.4之前默认是10,之后是100,现在可以支持1-10000,这个值直接影响柱状图信息的详细程度,当然是越详细越好,但是由此也会带来性能的开销,所以注意权衡该值。

检查点相关参数:

checkpoint_segments:这个参数影响检查点操作时间,如果上一个检查点后,事务产生的事务日志超过这个值,那么系统就再一次做一次检查点。WAL log的最大值,logfile segments 每个16M。

checkpoint_timeout:检查点执行的时间间隔

checkpoint_completion_target:检查点的完成目标,取值是0~1,默认是0.5,这个值一般不要修改,0.5表示要在checkpoint_timeout*0.5的时间内完成。

checkpoint_warning = 30s:默认30s,如果检查点实际发生的时间间隔小于改参数,则会在数据库日志中写入一条信息,如果是0,禁止写入。

wal segments至少是一个,最大不超过(2 + checkpoint_completion_target) * checkpoint_segments + 1这个数量

wal设置相关参数:

wal_buffers:默认64KB,最小32KB,事务日志缓存区,现在根据当前的服务器内存,一般都设置16MB,除非你的内存很小。

wal_sync_method:WAL写入磁盘的控制方式,参数有几个值fsync_writethrough,fdatasync,open_datasync,open_sync。linux默认是fdatasync。fsync如果是off的,那么这个设置无效。

wal_writer_delay:写日志进程的睡眠时间,进程每次写完就会睡眠改值,完了醒来继续从WAL BUFFER写入到日志文件。

#commit_delay = 0                       # range 0-100000, in microseconds   发出commit命令后,睡眠指定的该值才真正写入wal文件,算事务提交结束。默认值0
#commit_siblings = 5                    # range 1-1000  这个参数决定commit_delay 是否生效,这里默认是5,如果我们发出一个提交事务请求,而改数据库中有正在执行的事务大于或者等于5个,那么该事务睡眠commit_delay 参数指定的值,否则直接提交。
archive_mode:是否开启归档模式

archive_timeout:单位是秒,默认是0,这个是强制切换日志的时间,正常情况是写满一个,再写下一个,如果这里不为0,当前时间减去上次数据库事务日志切换的时间,大于这个值,那么就进行一次日志切换。也就是日志切换的时间间隔。

wal_level:minimal, archive, or hot_standby,有三个值,这里除了minimal,其他两个值都需要打开归档。

今天服务端配置的一些参数就介绍到这里,当然还有很多没有介绍,其实遇到相关参数可以官方文档查阅一下便知

你可能感兴趣的:(postgresql server configuration)