PostgreSQL版本:10.5
检查数据库参数:
postgres=# select name,setting,unit from pg_settings
where name in
('max_connections','shared_buffers','Effective_cache_size',
'work_mem','maintenance_work_mem','wal_sync_method','wal_buffers',
'synchronous_commit','default_statistics_target',
'checkpoint_timeout','checkpoint_completion_target',
'max_wal_size','min_wal_size');
name | setting | unit
------------------------------+-----------+------
checkpoint_completion_target | 0.5 |
checkpoint_timeout | 300 | s
default_statistics_target | 100 |
maintenance_work_mem | 16384 | kB
max_connections | 100 |
shared_buffers | 131072 | 8kB
synchronous_commit | on |
wal_buffers | 2048 | 8kB
wal_sync_method | fdatasync |
work_mem | 1024 | kB
(10 rows)
与数据库连接和安全认证相关的参数,可以参考pg_settings
视图中的说明。
*
或者0.0.0.0
表示监听本机的所有IP地址,并且支持IPv6地址。与数据库缓存和I/O相关的参数,对数据库性能调优非常重要。
内存参数配置须满足:
max_connections*work_mem + shared_buffers + temp_buffers + maintenance_work_mem < OS_PHYSIC_MEMORY
为PostgreSQL配置大页内存的方法如下:
#查看操作系统大页大小
grep Hugepage /proc/meminfo
#计算所需大页数量
num_hpages = shared_buffers/Hugepagesize
#设置大页数量
sed -i '\$ a\vm.nr_hugepages = ${num_hpages}' /etc/sysctl.conf
#在数据库中启用大页
sed -i 's/.*huge_pages.*/huge_pages = on/g' $PGDATA/postgresql.conf
#重启操作系统和数据库
reboot
pg_ctl start
#检查大页
cat /proc/meminfo | grep -i huge
WAL日志的作用是保证数据一致性和事务完整性,对于数据库崩溃时进行事务恢复至关重要。
错误日志输出策略相关:
postgresql-%y-%m-%d_%h%m%s.log
。未开启日志轮转时,生成的日志文件不会过期,需要手动清理,否则可能导致文件系统空间被占满。假如日志文件只需保留7天,可以进行如下设置:
alter system set logging_collector=on;
alter system set log_filename="server_%a.log";
alter system set log_truncate_on_rotation=on;
然后重启数据库。这样每周会依次生成server_Mon.log、server_Tue.log、…、server_Sun.log七个日志文件,并且最新的日志文件会覆盖上一周生成的同名文件。
错误日志输出内容相关:
postgresql.auto.conf文件:
通过ALTER SYSTEM修改的配置参数会被记录到postgresql.auto.conf文件中。该文件不能手动修改。
HBA即Host-Based Authentication,该配置文件记录了允许哪些IP地址的机器可以访问数据库。
[postgres@dbhost ~]$ cat $PGDATA/pg_hba.conf | grep -v '^$' | grep -v '^#'
local all all trust
host all all 127.0.0.1/32 trust
host all all 0.0.0.0/0 trust
host all all ::1/128 trust
local replication all trust
host replication all 127.0.0.1/32 trust
host replication all ::1/128 trust
其中:
常用的认证方式:
References
【1】https://www.postgresql.org/docs/current/runtime-config-resource.html
【2】https://wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server
【3】https://www.percona.com/blog/2018/08/31/tuning-postgresql-database-parameters-to-optimize-performance/
【4】https://pgtune.leopard.in.ua/#/