我正在使用 PostgreSQL。我曾尝试构建一个专门使用可串行化事务的系统,希望它能简化我的应用程序开发。我已将只读事务标记为 READ ONLY。然而,我的写入经常与只读查询获取的 SIReadLock 发生争用,从而将写入变成连续重试。从那时起,我就以 READ COMMITTED 方式运行只读查询,现在一切都运行顺利。
现在我想知道 - 如果事务是只读的,也就是说,如果我在隔离级别“可重复读取”下运行查询,可能会发生什么序列化异常,并且可以通过“可串行化”(及其相关成本)来防止?我很难想出一个例子来说明这种情况下所提供的好处。