Pipelining in psql (PostgreSQL 18)
7 months ago
- #Performance
- #PostgreSQL
- #Database
- PostgreSQL的流水线技术允许客户端无需等待前序查询结果即可发送新查询,显著提升吞吐量。
- 该技术通过实现客户端、网络和服务器的并行处理,优化了网络数据包利用率。
- 自PostgreSQL 7.4(2003年)起支持,但基于libpq的驱动(如psycopg3)直到2021年(PostgreSQL 14)才实现支持。
- PostgreSQL 18新增psql命令(\startpipeline, \endpipeline, \syncpipeline, \getresults),简化SQL脚本中的流水线操作。
- 流水线会创建隐式事务——若某查询失败,系统将回滚至上个同步点之后的所有变更。
- 性能测试显示,在不同网络环境(本地、局域网、广域网)下均实现显著加速(1.5倍至71倍)。
- 该特性特别适合批量独立查询场景,可避免复杂多行查询的维护难题。
- 具备向后兼容性:即使服务器未升级至PostgreSQL 18,仅升级psql客户端即可使用新功能。