博客
关于我
PostgreSQL学习总结(13)—— PostgreSQL 目录结构与配置文件 postgresql.conf 详解
阅读量:795 次
发布时间:2023-03-03

本文共 2852 字,大约阅读时间需要 9 分钟。

PostgreSQL 环境搭建及配置详解

环境搭建与目录结构

PostgreSQL 的环境搭建完成后,我们可以通过环境变量查看相关目录结构。以下是常见的环境变量及其作用:

export PGHOME=/usr/local/pgsqlexport PGUSER=postgresexport PGPORT=5432export PGDATA=/app/pgsql/dataexport PGLOG=/app/pgsql/log/postgres.logexport PATH=$PGHOME/bin:$PATH:$HOME/binexport LD_LIBRARY_PATH=$PGHOME/lib:$LD_LIBRARY_PATH

软件安装目录

/usr/local/pgsql/ 是 PostgreSQL 软件的安装目录,类似于 Oracle 的 /app/oracle。在此目录下可以找到如 psqlpg_ctl 等可执行文件。

cd /usr/local/pgsqlls

数据目录

/app/pgsql/data/ 是 PostgreSQL 数据目录,相当于 Oracle 中指定的数据目录。数据库参数文件、数据文件等均位于此处。

cd /app/pgsql/datals

日志目录

/app/pgsql/log/ 是 PostgreSQL 的日志存储路径,可自定义配置数据库日志等信息。

cd /app/pgsql/logls

配置文件详解

PostgreSQL 初始化完成后,会在 PGDATA 目录下生成 postgresql.conf 配置文件。默认参数已注释,生产环境建议根据需求进行优化。

常用配置参数

max_connections=100shared_buffers=128MBdynamic_shared_memory_type=posixmax_wal_size=1GBmin_wal_size=80MBlog_timezone='PRC'datestyle='iso, mdy'timezone='PRC'lc_messages='en_US.UTF-8'lc_monetary='en_US.UTF-8'lc_numeric='en_US.UTF-8'lc_time='en_US.UTF-8'default_text_search_config='pg_catalog.english'

参数说明

连接设置

  • listen_addresses:指定服务器监听的 IP 地址,默认为 localhost。
  • max_connections:数据库的最大并发连接数,默认为 100。

内存设置

  • shared_buffers:数据库使用的共享内存大小,默认为 128MB,建议根据系统内存调整。
  • work_mem:单次查询操作的内存限制,默认为 4MB。
  • maintenance_work_mem:维护性操作使用的内存,默认为 64MB。

IO 优化

  • bgwriter_delay:后台写入器活动轮次间的延迟,默认为 200ms。
  • effective_io_concurrency:磁盘预读优化,默认为 1,建议关闭以提高性能。

WAL 优化

  • wal_compression:启用 WAL 压缩,默认为 off,需超级用户启用。
  • max_wal_size:WAL 的最大存储大小,默认为 1GB。

日志设置

  • log_destination:日志输出方式,默认为 stderr。
  • log_filename:日志文件名格式,默认为 postgresql-%a.log

配置脚本示例

# 内存管理shared_buffers=16GBmax_prepared_transactions=2000work_mem=8MBmaintenance_work_mem=2GBautovacuum_work_mem=1GB# IO 优化bgwriter_delay=10msbgwriter_lru_maxpages=1000bgwriter_lru_multiplier=10.0bgwriter_flush_after=512kBeffective_io_concurrency=0# 并行优化max_worker_processes=256max_parallel_maintenance_workers=6max_parallel_workers=28# WAL 优化wal_compression=onwal_keep_segments=15archive_mode=onmax_replication_slots=64# 自动清理autovacuum=onautovacuum_vacuum_scale_factor=0.02autovacuum_analyze_scale_factor=0.01autovacuum_freeze_max_age=10000000

详细参数说明

连接参数

  • listen_addresses:指定数据库服务器监听的 IP 或主机名,默认为 localhost。
  • max_connections:数据库的最大并发连接数,默认为 100。

内存管理

  • shared_buffers:数据库使用的共享内存大小,建议设置为系统内存的 25%。

IO 优化

  • bgwriter_delay:后台写入器活动轮次间的延迟。
  • effective_io_concurrency:磁盘预读优化。

数据保留策略

  • max_wal_size:WAL 文件的最大存储大小。
  • min_wal_size:WAL 文件的最小存储大小。

自动清理

  • autovacuum:启用自动清理功能,默认为 on。
  • autovacuum_vacuum_scale_factor:触发自动清理的 DML 比例。

日志设置

  • log_min_duration_statement:记录慢 SQL 的时间阈值,默认为 5s。

时间相关

  • datestyle:日期时间显示格式,默认为 ISO, mdy。
  • timezone:数据库时区,默认为 GMT。

业务表优化建议

高频 DML 表

ALTER TABLE mytable SET (autovacuum_vacuum_scale_factor=0.01);

索引字段

ALTER TABLE mytable SET (fillfactor=80);

仅插入表

ALTER TABLE mytable SET (autovacuum_freeze_max_age=10000000);

系统环境设置

  • lc_messages:设置消息显示语言,默认为系统环境。
  • lc_time:设置日期时间显示格式,默认为系统环境。

总结

以上配置和参数设置可根据实际业务需求进行调整。建议结合业务场景,对重要表单独进行优化配置,以提升 PostgreSQL 的性能和稳定性。

转载地址:http://tsxfk.baihongyu.com/

你可能感兴趣的文章
SpringBoot中集成阿里开源缓存访问框架JetCache实现声明式实例和方法缓存
查看>>
pom.xml中提示web.xml is missing and <failonmissingw>...
查看>>
Pomelo开发中Web客户端开发API简介
查看>>
QT教程2:QT5的体系构架
查看>>
PON架构(全光网络)
查看>>
PoolingHttpClientConnectionManager原理剖析
查看>>
QT教程1:ubuntu18.04安装QT5
查看>>
POP-一个点击带有放大还原的动画效果
查看>>
POP3 协议在计算机网络中的优缺点
查看>>
qt批量操作同类型控件
查看>>
Portaudio笔记-WASAPI
查看>>
position:fixed失效情况
查看>>
Qt开发笔记:QGLWidget、QOpenGLWidget详解及区别
查看>>
Position属性四个值:static、fixed、absolute和relative的区别和用法
查看>>
POSIX thread编程中关于临界区内条件变量的分析
查看>>
POSIX与程序可移植性
查看>>
posix多线程有感--自旋锁
查看>>
SpringBoot中集成海康威视SDK实现布防报警数据上传/交通违章图片上传并在linux上部署(附示例代码资源)
查看>>
POSIX标准和XSI扩展
查看>>
post install error,please remove node_moules before retry
查看>>