【发布时间】:2014-01-11 14:39:22
【问题描述】:
我是 sql 初学者,我需要有关事务隔离级别的帮助。 我需要知道哪种隔离级别最适合以下情况以及原因:
数据库中有3张表:
- 动物(通过在其中插入芯片进行注册)KEY - ID_CHIP REF CHIPS
- 芯片(可以但不必插入动物体内)KEY - ID_CHIP。其中一个属性是“INSERTED_BY”,它引用第三个表 PEOPLE(给出插入芯片的人的 ID,如果尚未插入则为 NULL)
- 人员 - 密钥:ID
现在让我们考虑以下交易:将新芯片插入动物体内。更新数据库的人必须改变两件事:
- 向 ANIMALS 添加一个新实体
- 更新插入的芯片记录(将 INSERTED_BY 属性从 NULL 更改为插入芯片的人的 ID)
第二个事务是控制器事务,它检查 ANIMALS 中的实体数量是否等于属性 INSERTED_BY 不等于 NULL 的 CHIPS 数量。 一种情况如下图所示:
谁能告诉我四个隔离级别中哪一个最好?为什么?我被困在这里.. 任何帮助将不胜感激。
【问题讨论】:
-
你能解释一下为什么你需要第二次交易吗?读取索引/表堆中的所有记录不是一个好的/可扩展的解决方案。
-
@BogdanSahlean 这是一个学术项目,我必须模拟隔离级别,这就是我想出的例子。
-
@Simon 很高兴知道,因为这解释了为什么您对快照隔离不感兴趣。换句话说,您对生产级解决方案不感兴趣。你想精确地“模拟”什么?
标签: sql sql-server transactions isolation-level