配置参数优化
前言
列举一些对pg性能影响比较大的配置参数
查询配置参数:show <param name>;
最大客户端连接数max_connections
默认100,根据机器实际负载来调整,不是越大越好。
数据库缓冲区shared_buffers
生产环境一般设置为物理内存的25%
硬盘缓存的内存effective_cache_size
用于估计可以做硬盘缓存的内存大小
维护任务的内存maintenance_work_mem
用于维护任务的内存设置,对于vacuum, restore, create index, foreign key和alter table等操作有影响
检查点完成速度checkpoint_completion_target
制定检查点完成的速度,0.5 表示在 checkout_timeout 一半的时间内完成。checkpoint_completion_target 参数的值越大,意味着检查点进程的休眠时间越长。休眠时间越长,内存数据刷盘的IO操作越平滑,从而提高IO性能。
列的默认统计目标default_statistics_target
增加该参数的值会增加sql语句分析的时间,但可能会改善数据库优化器的优化质量
硬盘读写成本估计random_page_cost
用于设置数据库优化对一次非顺序读写获取硬盘页面的成本估计。减小该参数值将导致数据库更倾向于索引扫描,增加值将让索引扫描看起来相对更昂贵。
硬盘IO操作并发数effective_io_concurrency
用于设置pg可以同时被执行的并发硬盘IO操作的数目,增加参数值可以增加单个pg会话并行发起的IO操作数目。对于HDD类型的硬盘,一般设置2~5;对于SSD,则可以设置100以上或更高