我是一名sql初学者,我需要有关事务隔离级别的帮助。 我需要知道哪种隔离级别最适合以下情况以及原因:
数据库中有3个表:
现在让我们考虑以下事务:已经在动物中插入了新芯片。更新数据库的人必须改变两件事:
第二个事务是控制器事务,它检查ANIMALS中的实体数是否等于具有INSERTED_BY属性不等于NULL的CHIPS数。 下图显示了一种情况:
谁能告诉我哪种四肢隔离级别最好?为什么?我被困在这里..任何帮助都将不胜感激。
答案 0 :(得分:1)
您的情况很容易,因为其中一个交易是纯粹的读取交易。查看快照隔离。在SNAPSHOT
隔离级别下运行阅读器将为其提供整个数据库的时间点一致视图。不会锁定或等待锁定。
这意味着在t2时,C2将无法看到插入物。
这很容易实现并完全解决问题。
如果没有 SNAPSHOT
隔离,您需要SERIALIZABLE
隔离,并且您将陷入僵局。现在您需要调查锁定提示。更复杂,没有必要。