PostgreSQL 12.0安装与性能优化指南

发布时间:2026/9/26 22:39:05

PostgreSQL 12.0安装与性能优化指南 1. 为什么选择PostgreSQL 12.0PostgreSQL作为功能最强大的开源关系数据库之一12.0版本在2019年发布时带来了多项关键改进。这个版本最吸引我的地方是它的分区表性能提升——相比11版本查询速度提高了10倍以上。对于需要处理海量数据的场景这个改进直接决定了系统能否扛住生产环境的压力。在实际项目中我遇到过MySQL分区表性能瓶颈的问题。当单表数据超过5000万条时即使加了索引查询响应时间也会变得不稳定。而PostgreSQL 12.0引入的声明式分区特性配合查询优化器的改进让分区表的使用体验接近普通表这对数据分析类应用简直是福音。另一个选择12.0版本的原因是它的JIT即时编译功能趋于成熟。对于复杂查询JIT可以将执行计划编译为机器码在我的测试中某些分析型查询速度提升了20%-30%。虽然这个功能默认关闭但对于数据仓库应用来说开启后效果立竿见影。提示如果服务器内存小于8GB建议谨慎使用JIT功能可能会适得其反2. 环境准备与依赖检查2.1 系统要求验证在开始安装前我们需要确认系统环境是否符合要求。PostgreSQL 12.0官方建议的最小内存是1GB但根据我的经验生产环境至少需要4GB才能流畅运行。可以通过以下命令检查free -h存储方面数据目录建议预留至少10GB空间。使用df命令查看磁盘剩余空间df -h /var最关键的是内核参数调整。PostgreSQL对共享内存有较高要求需要修改/etc/sysctl.conf文件# 添加或修改以下参数 kernel.shmmax 17179869184 # 16GB kernel.shmall 4194304 # 计算值16GB/4KB然后执行sysctl -p使配置生效。我曾经遇到过因为shmmax设置太小导致数据库无法启动的问题这个坑特别隐蔽。2.2 依赖包安装不同Linux发行版的依赖包略有差异。以CentOS 7为例需要先安装这些基础包yum install -y readline-devel zlib-devel \ bison flex perl-ExtUtils-Embed \ openssl-devel pam-devel libxml2-devel \ libxslt-devel systemd-develUbuntu/Debian系统则使用apt-get install -y build-essential libreadline-dev \ zlib1g-dev flex bison libssl-dev \ libxml2-dev libxslt-dev特别注意如果系统有旧版本的PostgreSQL务必先彻底卸载。我曾经因为残留的libpq库导致新版本编译失败排查了整整一天。3. 源码编译安装详解3.1 下载与解压源码从官网获取12.0版本源码包wget https://ftp.postgresql.org/pub/source/v12.0/postgresql-12.0.tar.gz tar -xzvf postgresql-12.0.tar.gz cd postgresql-12.0建议验证下载文件的完整性md5sum postgresql-12.0.tar.gz # 对比官网提供的校验值a5a...3.2 配置编译选项编译前的configure步骤非常关键它决定了最终安装的功能集。我的常用配置如下./configure --prefix/usr/local/pgsql-12.0 \ --with-openssl \ --with-pam \ --with-libxml \ --with-systemd \ --with-uuide2fs各参数含义--prefix指定安装目录方便多版本共存--with-openssl启用SSL加密连接--with-systemd支持systemd管理如果需要地理空间支持可以添加--with-pgconfig选项。我曾经在一个GIS项目中因为漏掉这个选项后期不得不重新编译。3.3 编译与安装使用并行编译加快速度根据CPU核心数调整make -j4 make install编译完成后添加环境变量方便使用echo export PATH/usr/local/pgsql-12.0/bin:$PATH ~/.bashrc source ~/.bashrc4. 数据库初始化与配置4.1 创建专用用户安全起见应该使用非root用户运行PostgreSQLgroupadd postgres useradd -g postgres postgres passwd postgres4.2 初始化数据目录选择存储空间充足的路径作为数据目录mkdir -p /data/pgdata chown postgres:postgres /data/pgdata切换到postgres用户初始化su - postgres initdb -D /data/pgdata -E UTF8 --localeC关键参数说明-D指定数据目录位置-E设置默认编码为UTF8--localeC避免排序规则问题4.3 基础配置调整修改/data/pgdata/postgresql.conflisten_addresses * # 允许远程连接 port 5432 # 默认端口 max_connections 100 # 根据服务器配置调整 shared_buffers 2GB # 建议内存的25% work_mem 16MB # 每个查询工作内存 maintenance_work_mem 256MB # 维护操作内存配置客户端认证/data/pgdata/pg_hba.conf# 允许本地所有用户通过密码连接 host all all 127.0.0.1/32 md5 # 允许特定IP段连接 host all all 192.168.1.0/24 md55. 服务管理与优化5.1 配置systemd服务创建服务文件/etc/systemd/system/postgresql-12.service[Unit] DescriptionPostgreSQL 12.0 Database Server Afternetwork.target [Service] Typenotify Userpostgres Grouppostgres ExecStart/usr/local/pgsql-12.0/bin/postgres -D /data/pgdata ExecReload/bin/kill -HUP $MAINPID KillModemixed Restarton-failure [Install] WantedBymulti-user.target启用并启动服务systemctl daemon-reload systemctl enable postgresql-12 systemctl start postgresql-125.2 性能优化建议根据服务器配置调整这些关键参数# 在postgresql.conf中 effective_cache_size 6GB # 可用内存的50-75% random_page_cost 1.1 # SSD存储设为1.1 effective_io_concurrency 200 # SSD建议值 max_worker_processes 8 # 并行查询工作进程数 max_parallel_workers_per_gather 4 # 每个查询并行度对于写密集型应用可以调整wal_level replica synchronous_commit off checkpoint_timeout 15min max_wal_size 4GB6. 常见问题排查6.1 启动失败无法创建锁文件错误信息FATAL: could not create lock file /tmp/.s.PGSQL.5432.lock: Permission denied解决方法chown postgres:postgres /tmp/.s.PGSQL.*6.2 连接数耗尽当出现too many connections错误时临时解决方案-- 以超级用户连接后执行 SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE state idle AND pid pg_backend_pid();长期方案是调整max_connections参数并配置连接池如pgBouncer。6.3 数据目录权限问题如果遇到类似错误/home/postgres/data/global/pg_control: no such file通常是权限配置错误确保整个数据目录属于postgres用户chown -R postgres:postgres /data/pgdata7. 日常维护操作7.1 备份与恢复基础备份命令# 逻辑备份单个数据库 pg_dump -U postgres -d mydb mydb_backup.sql # 物理备份整个集群 pg_basebackup -D /backup/pg_backup -Ft -z -P -U replicator恢复时特别注意# 先停止服务 systemctl stop postgresql-12 # 清空数据目录 rm -rf /data/pgdata/* # 恢复备份 tar -xvf backup.tar -C /data/pgdata # 确保权限正确 chown -R postgres:postgres /data/pgdata7.2 版本升级策略小版本升级如12.0到12.4通常可以直接替换二进制文件。大版本升级如11到12建议使用pg_dumpall逻辑备份在新版本上初始化数据目录恢复备份数据运行ANALYZE更新统计信息我曾经尝试过使用pg_upgrade工具直接升级虽然速度快但遇到了一些兼容性问题所以现在更倾向于逻辑备份的方式。
延伸阅读

更多相关文章

2026/9/21 20:11:38

UE5高精度地形构建:从Landscape系统到虚拟纹理的完整实践

1. 项目概述:构建一个可信赖的高精度世界在虚幻引擎5(UE5)中构建一个高精度、可信赖的世界平面地形,并包含水下地形,这远不止是简单地“铺一层地皮”。它关乎于创造一个能让玩家沉浸其中、让叙事自然发生、让技术服务于…

2026/9/23 0:09:46

鸿蒙跨端开发实战:核心技术解析与性能优化

1. 鸿蒙生态的跨端开发现状2023年华为开发者大会上公布的数据显示,鸿蒙生态设备总量已突破7亿台,其中移动终端占比约65%,PC、智能穿戴等设备占比正在快速提升。这种设备分布格局直接催生了开发者对跨端开发方案的强烈需求。我去年参与的一个电…

2026/9/24 11:47:38

MySQL时间戳存储机制与CRUD操作实践指南

1. MySQL时间戳问题的本质与解决方案作为一名长期与MySQL打交道的开发者,时间戳问题几乎是我每天都会遇到的"老朋友"。很多人以为时间戳就是简单的日期时间记录,但MySQL中的时间戳远比表面看起来复杂得多。1.1 MySQL时间戳的存储机制MySQL中的…

2026/9/26 22:35:34

告别模板丑感:wordpress导航小图标实战与保姆级建站教程

告别模板丑感:wordpress导航小图标实战与保姆级建站教程 模板网站太丑不够用?这是很多刚接触 WordPress 的站长最真实的痛点。你花了大几千买个主题,结果导航栏光秃秃的,像个没做完的半成品,客户一眼就看穿这是“套壳”站。今天这篇…

2026/9/26 22:35:34

专升本数据结构C语言核心考点:顺序表、链表与排序算法

简介:数据结构是专升本计算机类考试的重点科目,《数据结构1800例题与答案》复习资料包正是为备考专升本的考生及需要系统复习数据结构基础的学习者准备。包里共34个文件,约1.09MB,以23个htm格式的例题页面和11个doc格式的试题、答…

2026/9/26 22:35:34

IDA 7.0逆向实战:固件加载、脚本化与动态调试全解析

简介:IDA Pro 7.0是一款面向逆向工程与安全研究人员的交互式反汇编利器,广泛应用于恶意软件分析、漏洞挖掘、二进制审计与软件破解等场景。资源包约200.83MB,共1002个文件,含283个dll插件模块、174个sig签名库、107个py脚本、87个…

2026/9/26 22:35:34

Ollama 本地部署完整指南:模型目录、GGUF 导入与 AnythingLLM 接入

简介:针对Ollama本地私有化部署的安装指导小资源,适合需要在Linux/macOS环境快速完成大模型运行平台搭建的中初级开发者或运维人员。压缩包仅13KB,由3个文件构成,包括1个txt说明文档、1个sh安装脚本和1个php下载入口脚本&#xff…

2026/9/26 22:30:33

2011-2026年 省、地级市城投债信用利差数据 xlsx

1、数据介绍 本套2011-2026年省、地级市城投债信用利差跟踪数据覆盖全市场公募债与私募债样本,信用利差计算口径统一为个券估值减去同期限国开债收益率。样本筛选环节剔除剩余期限半年以内或五年以上的个券,估值采用不行权估值规则,同期限国…

2026/9/25 21:00:17

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/25 20:59:52

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/26 0:04:28

画质修复APP怎么选?Wink影像修复能力与产品实力解析

现如今手机拍摄场景愈发丰富,演唱会直拍、漫展记录、老视频翻新、日常vlog录制,都会遇到画面模糊、噪点多、曝光失衡等问题,不少用户在挑选工具时比较在意一款画质修复APP能够兼顾修复效果与自然质感。Wink作为美图公司推出的全球化AI影像增强…

2026/9/26 0:04:28

超低能耗建筑K值要求能否满足?浙东铝业建筑型材解析

核心摘要浙东铝业的超低能耗系统门窗产品,资料显示保温性能可达 K≤1.4W/(㎡K),能够对应上海地区超低能耗住宅对门窗保温性能的应用需求。判断建筑是否满足超低能耗要求,不能只看铝型材本身,还需要结合玻璃、隔热条、密封系统、开…

2026/9/25 20:55:38

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/26 19:58:38

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/25 18:34:56

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑