设为首页 加入收藏

TOP

postgresql9.4.4安装(二)
2015-11-21 02:07:16 来源: 作者: 【 】 浏览:4
Tags:postgresql9.4.4 安装
700

?

TCP会话心跳包在Linux下面默认是2小时. 如果已经修改了系统的内核参数, 则不需要再修改这里.

为防止客户端和服务端之间的网络设备主动关闭空闲TCP会话, 设置以下参数.

tcp_keepalives_idle = 60

tcp_keepalives_interval = 10

tcp_keepalives_count = 6

?

大的shared_buffers需要大的checkpoint_segments,同时需要申请更多的System V共享内存资源. 并且增加共享内存管理的开销.

这个值不需要设的太大, 因为PostgreSQL还依赖操作系统的文件系统cache来提高读性能, 另外, 写操作频繁的数据库这个设太大反而会增加checkpoint压力.

在9.4版本中会增加mmap以及huge page table的支持以减少内存管理的开销.

shared_buffers = 512MB

?

这个值越大, VACUUM, CREATE INDEX的操作越快, 当然大到一定程度瓶颈就不在内存了, 可能是CPU例如创建索引.

这个值是一个操作的内存使用上限, 而不是一次性分配出去的. 并且需要注意如果开启了autovacuum, 最大可能有

autovacuum_max_workers*maintenance_work_mem的内存被系统消耗掉.

maintenance_work_mem = 512MB

?

一般设置为比系统限制的略少,ulimit -a : stack size (kbytes, -s) 10240

max_stack_depth = 8MB

?

手动执行vacuum操作时, 默认是没有停顿执行到底的, 为了防止VACUUM操作消耗太多数据库服务器硬件资源, 这个值是指vacuum在消耗多少资源后停顿多少时

间,以便其他的操作可以使用更多的硬件资源.

vacuum_cost_delay = 10ms

vacuum_cost_limit = 10000 # 1-10000 credits

?

默认bgwriter进程执行一次后会停顿200ms再被唤醒执行下一次操作, 当数据库的写操作很频繁的时候, 200ms可能太长, 导致其他进程需要花费过多的时间来进行

bgwriter的操作. 短暂的停顿更利于将sharedbuffer中的脏块flush到磁盘, 降低backend 主动flush 以申请共享内存的情形. 后面使用explain时会讲到.

bgwriter_delay = 10ms

?

另外还有几个和写脏块相关的参数, 即写多少脏块后开始休息.

如果需要做数据库WAL日志备份的话至少需要设置成archive级别, 如果需要做hot_standby那么需要设置成hot_standby,由于这个值修改需要重启数据库, 所以先

设置成hot_standby比较好. 当然hot_standby意味着WAL记录得更详细, 如果没有打算做hot_standby设置得越低性能越好.

wal_level = hot_standby

?

wal buffers默认是-1 根据shared_buffers的设置自动调整shared_buffers*3%.最大限制是XLOG的segment_size.

wal_buffers = 16384kB

?

多少个xlog file产生后开始checkpoint操作,

这个值越大, 允许shared_buffer中的被频繁访问的脏数据存储得更久. 一定程度上可以提高数据库性能. 但是太大的话会导致在数据库发生checkpoint的时候需要

处理更多的脏数据带来长时间的IO开销(还要考虑bgwriter的存在).

太小的话会导致产生更多的WAL文件 (因为full page writes=on, CHECKPOINT后的第一次块的改变要写全块,checkpoint越频繁, 越多的数据更新要写全块导致产

生更多WAL).

checkpoint_segments = 32

?

这个和checkpoint_segments的效果是一样的, 只是触发的条件是时间条件.

checkpoint_timeout = 5min

?

归档参数的修改也需要重启数据库, 所以就先打开吧.

archive_mode = on

?

这个是归档调用的命令, 我这里用date代替, 所以归档的时候调用的是输出时间而不是拷贝wal文件.

archive_command = '/bin/date' # 'cp %p/arch/%f'

?

如果要做hot standby这个必须大于0, 并且修改之后要重启数据库所以先设置为32.

表示允许建立多少个和流复制相关的连接.

max_wal_senders = 32

?

这是个standby 数据库参数, 为了方便角色切换, 我一般是所有的数据库都把他设置为on 的.

hot_standby = on

?

这个参数是说数据库中随机的PAGE访问的开销占seq_page_cost的多少倍 , seq_page_cost默认是1. 其他的开销都是seq_page_cost的倍数.

这些都用于基于成本的执行计划选择. 后面讲成本因子的调教时会详细说明.

random_page_cost = 2.0

?

effective_cache_size只是个度量值, 不是实际分配使用的内存值.

表示系统有多少内存可以作为操作系统的cache. 越大的话, 数据库越倾向使用index这种适合random访问的执行计划.

一般设置为内存大小减去数据库的shared_buffer再减去系统和其他软件所需的内存.

effective_cache_size = 12000MB

?

下面是日志输出的配置.

log_destination = 'csvlog'

logging_collector = on

log_directory = 'pg_log' #这里建议做修改,但得提前建好目录,并设置权限

log_truncate_on_rotation = on

log_rotation_age = 1d

log_rotation_size = 10MB

?

这个参数调整的是记录执行时间超过1秒的SQL到日志中, 一般用于跟踪哪些SQL执行时间长.

log_min_duration_statement = 1s

?

记录每一次checkpoint到日志中.

log_checkpoints = on

?

记录锁等待超过1秒的操作, 一般用于排查业务逻辑上的问题.

log_lock_waits = on

deadlock_timeout = 1s

?

记录连接和端口连接, 可以反映短连接的问题, 同时也可以作为连接审计日志.

log_connections = on

log_disconnections = on

?

打开代码位置信息的输出, 可以反映日志信息输出自哪个代码的什么函数.

在会话中可以使用\set VERBOSITY verbose开启

log_error_verbosity = verbose

?

记录DDL语句, 但是需要注意的是, 创建用户, 修改密码的语句也会被记录, 所以敏感SQL执行前建议在会话中关闭这个审计.

log_statement = 'ddl'

?

这个原本是1024表示跟踪的SQL在1024的地方截断, 超过1024将无法显示全SQL. 修改为2048会消耗更多的内存(基本可以忽略), 不过可以显示更长的SQL.

track_a

首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇sqlserver、mysql、oracle各自的.. 下一篇SQL语言――高级方法

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: