PostgreSQL 逻辑复制 Apply Parallel Worker 参数调优实战
配套源码:~/cwork/postgresql(基于 PG 18 主干)配套前文:Apply Parallel Worker 运行机制解析
配套源码:~/cwork/postgresql(基于 PG 18 主干)配套前文:Apply Parallel Worker 运行机制解析
本文是一份性能分析入门 + 实战指南。前半段讲清楚火焰图和 perf 是什么、怎么用;后半段用 PostgreSQL 逻辑复制的 4 个真实问题,演示怎么用火焰图定位瓶颈。读完你会获得一个完整的"实战方法论"。
本文是「PostgreSQL 源码系列」的逻辑复制性能篇。配套源码版本:PostgreSQL 18 dev(~/cwork/postgresql)。同系列前文:
上期月报PgSQL · 特性分析 · Write-Ahead Logging机制浅析中简单介绍了PostgreSQL中WAL机制,其中讲到如果是创建checkpoint会触发刷新xlog日志页到磁盘,本文主要分析下PostgreSQL中checkpoint机制。
当tcp流中有数据交互时,tcp流不会进入keepalive,此时的超时主要受tcpusertimeout影响。数据包被发送后未接收到ACK确认的达到tcpusertimeout时会断开连接。tcpusertimeout以毫秒为单位,例如设置为10000时,代表如果发送出去的数据包在十秒内未收到ACK确认,则下一次调用send或者recv,则函数会返回-1,errno设置为ETIMEOUT。
检查点是数据库的关键行为,同时也是IO敏感的;其保证了数据库的一致性状态,定期执行检查点是很重要的,确保数据变化持久保存到磁盘中并且数据库的状态是一致的。不当的检查点配置会导致IO性能问题。我们需要关注检查点的配置,确保没有任何IO的尖刺(这同样也取决于磁盘性能的好坏,以及数据文件的组织)。