PostgreSQL自动提交SELECT查询的效率

问题描述 投票:0回答:1

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

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

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

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

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

postgresql performance autocommit
1个回答
1
投票

Autocommit是正确的,因为:

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