OLTP 模板
针对在线事务处理负载优化的 PostgreSQL 配置模板
oltp.yml 是 Pigsty 的默认配置模板,针对 在线事务处理(OLTP)负载进行了优化。适用于 4-128 核 CPU 的服务器,特点是高并发连接、低延迟响应、高事务吞吐量。
建议同时使用
node_tune=oltp进行操作系统级别的配套调优。
适用场景
OLTP 模板适用于以下场景:
- 电商系统:订单处理、库存管理、用户交易
- 社交应用:用户动态、消息推送、关注关系
- 游戏后端:玩家数据、排行榜、游戏状态
- SaaS 应用:多租户业务系统
- Web 应用:常规的 CRUD 操作密集型应用
特征负载:
- 大量短事务(毫秒级)
- 高并发连接(数百到数千)
- 读写比例通常在 7:3 到 9:1
- 对延迟敏感,要求快速响应
- 数据一致性要求高
使用方法
oltp.yml 是默认模板,无需显式指定:
或显式指定:
参数详解
连接管理
- 当
pg_default_service_dest为pgbouncer时,max_connections设为 500 - 当流量直连 PostgreSQL 时,
max_connections设为 1000 - 可通过
pg_max_conn参数覆盖
内存配置
OLTP 模板的内存分配策略:
| 参数 | 计算公式 | 说明 |
|---|---|---|
shared_buffers |
内存 × pg_shared_buffer_ratio |
默认比例 0.25 |
maintenance_work_mem |
shared_buffers × 25% | 用于 VACUUM、CREATE INDEX |
work_mem |
64MB - 1GB | 根据 shared_buffers/max_connections 计算 |
effective_cache_size |
总内存 - shared_buffers | 可用于缓存的预估内存 |
work_mem 计算逻辑:
这确保每个连接有足够的排序/哈希内存,但不会过度分配。
并行查询
OLTP 模板对并行查询做了适度限制,以避免并行查询抢占过多资源影响其他事务:
同时提高了并行查询的成本估算,让优化器倾向于串行执行:
WAL 配置
这些设置平衡了数据安全性和写入性能。
Vacuum 配置
OLTP 模板使用保守的 vacuum 设置,避免 vacuum 操作影响在线事务性能。
查询优化
这些设置让优化器能够生成更好的查询计划。
日志与监控
客户端超时
10 分钟的空闲事务超时可以防止长时间持有锁的僵尸事务。
扩展配置
与其他模板的对比
| 特性 | OLTP | OLAP | CRIT |
|---|---|---|---|
| max_connections | 500-1000 | 500 | 500-1000 |
| work_mem | 64MB-1GB | 64MB-8GB | 64MB-1GB |
| 并行查询 | 适度限制 | 激进启用 | 禁用 |
| vacuum 激进度 | 保守 | 激进 | 保守 |
| 事务超时 | 10min | 禁用 | 1min |
| 慢查询阈值 | 100ms | 1000ms | 100ms |
为什么选择 OLTP 而非 OLAP?
- 您的查询大多数是简单的点查和范围查询
- 事务响应时间要求在毫秒级
- 有大量并发连接
- 不需要执行复杂的分析查询
为什么选择 OLTP 而非 CRIT?
- 可以接受极小概率的数据丢失(异步复制)
- 不需要完整的审计日志
- 希望获得更好的写入性能
性能调优建议
连接池
对于高并发场景,强烈建议使用 PgBouncer 连接池:
只读分离
使用只读从库分担读取负载:
监控指标
关注以下监控指标:
- 连接数:活跃连接数、等待连接数
- 事务率:TPS、提交/回滚比例
- 响应时间:查询延迟百分位(p50/p95/p99)
- 锁等待:锁等待时间、死锁次数
- 复制延迟:从库延迟时间和字节数
参考资料
pg_conf:PostgreSQL 配置模板选择参数node_tune:操作系统调优模板,应与pg_conf配套- OLAP 模板:分析处理模板对比
- CRIT 模板:关键业务模板对比
- TINY 模板:微型实例模板对比
- 集群配置:PostgreSQL 集群类型配置
- 高可用:高可用架构设计