首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >重复的主键对于读提交的隔离是否明显?

重复的主键对于读提交的隔离是否明显?
EN

Stack Overflow用户
提问于 2013-10-30 23:45:42
回答 2查看 826关注 0票数 1

我有一个具有主键的表,该主键由唯一性约束支持。因此,具有SERIALIZABLE隔离的查询不应返回具有相同主键的两行。但对于具有READ COMMITTED隔离的查询也是如此吗?不可能存在明显的重复主键的最宽松的隔离级别是什么?

EN

回答 2

Stack Overflow用户

发布于 2013-10-31 00:33:44

不可能存在明显的重复主键的最宽松的隔离级别是什么?

REPEATABLE READREAD COMMITTED SNAPSHOT

在SQL Server中,在READ COMMITTED (锁定)时扫描读取一行两次是完全可能的。

在此隔离级别中,行锁在读取数据时立即释放,而不是在语句或事务结束时释放。

因此,如果在初始读取之后更新了键,则按键顺序读取索引的扫描可能会再次遇到相同的行,将其移动到索引中的后面。为了在实践中观察到重复的主键,被扫描的索引可能需要位于与PK本身不同的键列上。

如果尚未读取的数据在索引中向前移动到已扫描的部分,则REPEATABLE READ可能会遗漏行,但这不允许出现明显的重复主键现象。

票数 2
EN

Stack Overflow用户

发布于 2013-10-31 00:59:58

在OracleDB上,只要你的PK是不可延迟和延迟的,你就不能违反它:即使在最低支持的“读提交”级别(ANSI/ISO级别1),操作相同行的不同会话也会导致行锁争用。因此,第二个会话的DML将一直等待,直到第一次释放锁-通过提交或回滚-然后它会动态验证,如果PK被违反,它将失败。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19687493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档