文档用途
本文档提供了HighGo Database性能参数的作用及调整方向,使用过程中需参照实际情况具体进行选择。
详细信息
shared_buffers
最重要的参数,HighGo Database通过shared_buffers 和内核和磁盘进行数据交换,因此应该尽量大,让更多的数据缓存在shared_buffers中。通常设置为实际 RAM 的25% – 40%。
同时要在系统中设置 kernel.shamax 的值,该值决定了进程可调用最大共享内存数量。该值设置要稍大于shared_buffers的值。
work_mem
HighGo Database在执行排序操作时,会根据work_mem的大小决定是否将一个大的结果集拆分为几个小的和 work_mem 差不多大小的临时文件。显然拆分的结果是降低了排序的速度。因此增加work_mem有助于提高排序的速度。通常设置为实际RAM的2% – 4%,根据需要排序结果集的大小而定。
注意:这是 per connection and per sort 的设定。如果有100个连接,每个连接有2个sort 运算,那么需要的总内存是:100 * 2 * work_mem。
利用EXPLAIN ANALYZE可以检查是否有足够的work_mem。
effective_cache_size
值设置稍大,优化器更倾向使用索引扫描而不是顺序扫描,建议的设置为可用空闲内存的 25%,这里的可用空闲内存指的是主机物理内存在运行数据库后的空闲值。
maintenance_work_mem
这里定义的内存只是在 CREATE INDEX, VACUUM 等时用到,因此用到的频率不高,但是往往这些指令消耗比较多的资源,因此应该尽快让这些指令快速执行完毕:给 maintence_work_mem较大的内存,比如1024MB
max_connections
通常,max_connections的目的是防止 max_connections * work_mem 超出了实际内存大小。比如,如果将 work_mem 设置为实际内存的 2% 大小,则在极端情况下,如果有50个查询都有排序要求,而且都使用2% 的内存,则会导致 swap的产生,系统性能就会大大降低。
WAL
wal_buffers
WAL 的储存大小。default 是 64 kb。 实验证明, 设定这个值在 256 kb 到 1 MB 之间会提升效能。
wal_writer_delay
WAL 检查 WAL 数据(回写)的间隔时间。值是毫秒(milliseconds)
Checkpoints
确保数据回写硬盘。
如果 checkpoint 运行频率高于checkpint_warning 值,dirty data page 会被 flushed 回硬盘。HighGo Database会在日志(log中记录出来,通过观察log,可以来决定 checkpoint_segments 的设定。增加checkpoint_segments 或者 checkpoint_timeout 可以有一定的性能提升。
checkpoint_segments:日志文件段的最大数量(通常每个段16兆字节),到达后会激发checkpoint,默认设置为3,增加这个参数会增加数据库崩溃恢复所需要的时间。
checkpoint_timeout:检查点触发的超时时间,一般设置15-30分钟.
checkpoint_completion_target:默认是0.5,意思就是每个 checkpoint 预计在下个 checkpoint 完成前的一半时间内完成。
checkpoint_warning:如果checkpint速度快于这个时间(checkpoint过快),在log中记录。默认是30秒
1438

被折叠的 条评论
为什么被折叠?



