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
持有一个nACCESS SHARE
锁在桌子上,这将阻止像TRUNCATE
,DROP TABLE
和真空截断的命令。 - 驱动程序不必发送额外的
BEGIN
和COMMIT
语句,这将导致不必要的客户端 - 服务器往返。
以上是关于PostgreSQL自动提交SELECT查询的效率的主要内容,如果未能解决你的问题,请参考以下文章