Postgre数据库优化

一、查看服务器配置

1、查看CPU个数

cat  /proc/cpuinfo |grep "physical id" |sort |uniq |wc -l

2、查看单个CPU的物理核数

cat /proc/cpuinfo |grep "cpu cores" |uniq

3、查看逻辑线程数

cat /proc/cpuinfo |grep "processor" |wc -l

4、查看内存大小

free

5、查看存储大小

df -Th

 当然,数据库优化不需要考虑存储或者硬盘的大小。
我的服务器配置如下:
内存:512G
连接存储
cpu:2cpu 24核心 48线程

二、配置postgresql.conf

参数名称 默认值 优化值 参数说明
listen_addresses localhost * 允许所有ip连接
max_connections 100 200 允许的最大连接数
superuser_reserved_connections 3 13 保留给postgres用户的连接,适用于切换到postgres用户后开启多个连接的情况
shared_buffers 24MB 128GB 决定有多少内存可以被PostgreSQL用于缓存数据(推荐内存的1/4,不超过内存的1/2)
huge_pages try try 使用大页,建议shared_buffers超过32GB时开启
work_mem 1MB 8MB 内部排序和一些复杂的查询都在这个buffer中完成,不过要适可而止,每个连接都要用这么大的
effective_cache_size 4GB 256GB 优化器假设一个查询可以用的最大内存,和shared_buffers无关(推荐内存的1/2),设置稍大,优化器更倾向使用索引扫描而不是顺序扫描
maintenance_work_mem 64MB 2GB 这里定义的内存只是被VACUUM等耗费资源较多的命令调用时使用,把该值调大,能加快命令的执行
vacuum_cost_limit 200 500 清理delete后的空间,此时对io影响较大,提高该值减少对性能的影响
max_worker_processes 8 128 最大并发进程数,parallel worker等都算作worker process,该值要设置的足够大
max_parallel_workers_per_gather 2 4 每个执行节点的最大并行处理进程数,使用并行查询时设置该值大于1,不建议超过主机cores-2
max_parallel_workers 8 8 并行查询时,最大线程数
wal_buffers 4MB 用于wal的内存大小,设置为shared_buffers/32,设置为-1表示按shared_buffers计算
max_wal_size 1GB 256GB 小的时候wal日志写入量大,越大,崩溃恢复时间越长
min_wal_size 80MB 64GB 建议是shared_buffers的一半
check_point_timeout 5min 30min wal检查写入磁盘的时间间隔
log_destination stderr csvlog 日志文件输出地
log_truncate_on_rotation off on 删除同名的日志文件

你可能感兴趣的:(postgresql)