我想要确定的是,隔离程度和锁具之间是否有直接的关系。因此,假设我使用可序列化隔离级别启动了一个事务,那么Oracle默认情况下会在该事务中列出的所有表上获取某种类型的"Table“锁,如果是,那么它是什么?
我无法找到这个问题的直接答案,但我从许多在线文档中了解到,隔离级别与锁之间没有直接关系。将根据事务中存在的特定SQL语句获取锁,而不是基于事务隔离级别是否已被读取、提交或可序列化,因此,如果存在DML,则将获取只读表锁(RX),如果有类似于LOCK TABLE table IN EXCLUSIVE MODE;的语句,则将获得独占表锁(X)。
--请注意,这个问题非常特定于,然后非常具体地说明了可序列化隔离级别获取哪个锁。我绝不是在寻找与Oracle中的隔离级别和锁有关的答案,我已经阅读并理解了在线文档。
发布于 2022-11-26 06:48:38
我也问了同样的问题,并且亲切地问汤姆已经证实了我的理解-简而言之,隔离水平和锁具之间没有直接的关系。将根据事务中存在的特定SQL语句获取锁,而不是基于事务隔离级别是否已被读取、提交或可序列化,因此,如果存在DML,则将获取只读表锁(RX),如果有类似于LOCK TABLE table IN EXCLUSIVE MODE;的语句,则将获得独占表锁(X)。
https://stackoverflow.com/questions/74011000
复制相似问题