如何设置 SELECT 语句的隔离级别?

Gol*_*den 3 postgresql select isolation-level snapshot-isolation postgresql-9.5

使用 PostgreSQL 9.5 我想确保当我运行一个SELECT语句时我得到一致的结果,即如果表在SELECT运行时被修改,我想获得SELECT启动时有效的状态。

基本上,它就像:拍摄一张表的快照,并且在拍摄快照时不允许更新表,然后交付快照,同时再次允许更新。

如果我正确理解隔离级别,REPEATABLE READ这就是我要找的,不是吗?

现在我的问题是:如何SELECT使用REPEATABLE READ隔离级别运行?或者我错过了什么,我的方法是错误的?我将如何解决这个问题?

a_h*_*ame 5

你不需要做任何事情来获得语句级的一致性

无论您使用何种隔离级别,查询始终会看到数据库的一致状态。

引用手册:

这意味着,无论底层数据的当前状态如何,每个 SQL 语句都会看到数据的快照(数据库版本),就像它在一段时间之前一样。

参见手册中关于多版本并发控制的章节

  • 好吧,出于性能(和可扩展性)的原因,NoSQL 数据库专门放弃了事务、一致性和事务隔离。 (6认同)