gpt4 book ai didi

sql - 事务隔离级别 - 选择正确的隔离级别

转载 作者:行者123 更新时间:2023-12-03 00:46:52 26 4
gpt4 key购买 nike

我是一名 SQL 初学者,我需要有关事务隔离级别的帮助。我需要知道哪种隔离级别最适合以下情况以及原因:

数据库中有3张表:

  • 动物(通过在其中插入芯片来注册)KEY - ID_CHIP REF CHIPS
  • 芯片(可以但不必插入动物体内)KEY - ID_CHIP。其中一个属性是“INSERTED_BY”,它引用第三个表 PEOPLE(给出插入芯片的人的 ID,如果尚未插入则为 NULL)
  • 人员 - 键:ID

现在让我们考虑以下交易:新芯片已被植入动物体内。更新数据库的人必须更改两件事:

  • 向 ANIMALS 添加新实体
  • 更新插入的芯片记录(将 INSERTED_BY 属性从 NULL 更改为插入芯片的人的 ID)

第二个事务是 Controller 事务,它检查 ANIMALS 中实体的数量是否等于属性 INSERTED_BY 不等于 NULL 的 CHIPS 的数量。如下图所示的一种情况: Situation

谁能告诉我四种隔离级别中哪一种最好,为什么?我被困在这里..任何帮助将不胜感激。

最佳答案

您的情况很简单,因为其中一个事务是纯读事务。查看快照隔离。在 SNAPSHOT 隔离级别下运行读取器将为其提供整个数据库的时间点一致 View 。不会获取或等待任何锁。

这意味着在 t2 时,C2 将看不到插入内容。

这非常容易实现,并且完全解决了问题。

如果没有SNAPSHOT隔离,您将需要SERIALIZABLE隔离,并且会出现很多死锁。现在您需要研究锁定提示。更复杂,没有必要。

关于sql - 事务隔离级别 - 选择正确的隔离级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21063570/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com