PostgreSQL自动提交SELECT查询的效率

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PostgreSQL自动提交SELECT查询的效率相关的知识,希望对你有一定的参考价值。

我正在使用Psycopg2向我的Postgres DB发出许多SELECT查询。这些查询的结果很小,并且以高频率发送。

为了避免自己管理交易(因为我很懒),我在会话设置中设置了autocommit = True

编辑:查询之间没有长时间停顿,没有数据操作,并且在我停止查询后光标立即关闭。

我想知道:当以高频率发出SELECT查询时,是否存在使用自动提交的性能损失?

使用Postgres 9.6和Psycopg 2.7.7。是的,我正在使用准备好的陈述。

答案

Autocommit是正确的,因为:

  • 没有性能损失,因为只读事务不必写入事务日志(WAL)。
  • 没有锁定,例如a_horse_with_no_name评论。甚至一个SELECT持有一个n ACCESS SHARE锁在桌子上,这将阻止像TRUNCATEDROP TABLE和真空截断的命令。
  • 驱动程序不必发送额外的BEGINCOMMIT语句,这将导致不必要的客户端 - 服务器往返。

以上是关于PostgreSQL自动提交SELECT查询的效率的主要内容,如果未能解决你的问题,请参考以下文章

select in 在postgresql的效率问题

postgresql:解决in的效率问题

PostgreSQL Select 索引优化

POSTGRESQL中的行级锁及ODOO中的应用

postgresql查询的结果有空的集合,怎么去除

使用 SELECT 语句查询自定义 postgresql 参数