SELECT查询的PostgreSQL自动提交效率

时间:2019-03-05 14:05:36

标签: postgresql performance autocommit

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

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

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

我想知道:在高频率发布SELECT查询时,使用自动提交是否会降低性能?

使用Postgres 9.6和Psycopg 2.7.7。而且,,我正在使用准备好的语句。

1 个答案:

答案 0 :(得分:1)

自动提交是正确的事情,因为:

  • 没有性能损失,因为只读事务不必写入事务日志(WAL)。

  • 不保留任何锁,如a_horse_with_no_name注释。甚至SELECT在表上也拥有n个ACCESS SHARE锁,这将阻止TRUNCATEDROP TABLE和真空截断之类的命令。

  • 驱动程序不必发送那些多余的BEGINCOMMIT语句,这将导致不必要的客户端-服务器往返行程。