Daniel Vérité:psql中的管道化(PostgreSQL 18)

Daniel Vérité:psql中的管道化(PostgreSQL 18)

💡 原文英文,约1000词,阅读约需4分钟。
📝

内容提要

在Postgres中,管道化是一种客户端特性,自7.4版本以来得以实现,PostgreSQL 14及以后的版本通过libpq支持。使用psql命令可以轻松启动和结束管道化,从而提高查询性能,测试表明在不同网络条件下显著加速查询处理。

🎯

关键要点

  • 管道化是Postgres中的一种客户端特性,自7.4版本以来得以实现。

  • 管道化允许在发送下一个查询之前不等待前一个查询的结果,从而提高吞吐量。

  • PostgreSQL 14及以后的版本通过libpq支持管道化,psql命令行客户端也提供了相关命令。

  • 使用psql命令可以通过\startpipeline和\endpipeline来启动和结束管道化。

  • 管道化创建了一个隐式事务,如果查询失败,所有更改将被回滚。

  • 在性能测试中,使用管道化的查询处理速度显著提高,尤其是在不同网络条件下。

  • 在同一主机上,管道化加速范围为1.5倍到5倍,局域网中为2.6倍到42倍,广域网中为5.4倍到71倍。

  • 管道化优化了网络利用率,减少了网络数据包的数量。

  • psql版本18引入了管道化的元命令,但不需要服务器端也升级到18版本。

延伸问答

PostgreSQL中的管道化是什么?

管道化是一种客户端特性,允许在发送下一个查询之前不等待前一个查询的结果,从而提高查询吞吐量。

如何在psql中启动和结束管道化?

可以使用\startpipeline命令启动管道化,使用\endpipeline命令结束管道化。

管道化对查询性能有什么影响?

使用管道化可以显著提高查询处理速度,在同一主机上加速范围为1.5倍到5倍,局域网中为2.6倍到42倍,广域网中为5.4倍到71倍。

管道化是从哪个版本开始支持的?

管道化自PostgreSQL 7.4版本开始实现,但从PostgreSQL 14版本起通过libpq支持。

使用管道化时,如果查询失败会发生什么?

管道化创建了一个隐式事务,如果查询失败,所有更改将被回滚。

psql 18版本引入了哪些与管道化相关的新功能?

psql 18版本引入了用于SQL脚本的管道化命令,使得管道化更易于使用。

➡️

继续阅读