我们有一位客户在使用我们的数据库应用程序时遇到了阻塞问题。我们要求他们运行一个Blocked Process Report跟踪,而他们提供的跟踪结果显示在SELECT和UPDATE操作之间发生了阻塞。跟踪文件显示以下信息:
- 同一个SELECT查询在不同的隔离级别下执行。一个跟踪显示Serializable IsolationLevel,而后来的一个跟踪显示RepeatableRead IsolationLevel。我们没有在执行查询时使用显式事务。 - UPDATE查询使用RepeatableRead隔离级别执行,但被SELECT查询阻塞。这是预期的,因为我们的更新被包装在隔离级别为RepeatableRead的显式事务中。
因此,我们完全不知道为什么选择查询的隔离级别不是默认的ReadCommitted隔离级别,更加令人困惑的是,查询的隔离级别会随时间改变?只有一个客户看到了这种行为,所以我们怀疑这可能是数据库配置问题。
有什么想法吗?
谢谢, Graham
- 同一个SELECT查询在不同的隔离级别下执行。一个跟踪显示Serializable IsolationLevel,而后来的一个跟踪显示RepeatableRead IsolationLevel。我们没有在执行查询时使用显式事务。 - UPDATE查询使用RepeatableRead隔离级别执行,但被SELECT查询阻塞。这是预期的,因为我们的更新被包装在隔离级别为RepeatableRead的显式事务中。
因此,我们完全不知道为什么选择查询的隔离级别不是默认的ReadCommitted隔离级别,更加令人困惑的是,查询的隔离级别会随时间改变?只有一个客户看到了这种行为,所以我们怀疑这可能是数据库配置问题。
有什么想法吗?
谢谢, Graham