gpt4 book ai didi

database - READ COMMITTED 隔离级别使用什么锁类型?

转载 作者:搜寻专家 更新时间:2023-10-30 20:18:07 25 4
gpt4 key购买 nike

我在维基百科的一篇文章中发现了一个矛盾,不确定错误在哪里(或者我理解不正确)。

根据 Wikipedia在读提交隔离级别:

"在这个隔离级别,一个基于锁的并发控制DBMS实现保持写锁(在选定数据上获取)直到事务结束,但一旦读锁被释放执行SELECT操作(所以不可重复读现象可以发生在这个隔离级别,如下所述)”

进一步解释Non-repeatable reads phenomena这可能发生在 Read committed 隔离级别:

交易 1:

SELECT * FROM users WHERE id = 1;

交易 2:

UPDATE users SET age = 21 WHERE id = 1; COMMIT;

交易 1:

SELECT * FROM users WHERE id = 1; COMMIT;

根据第一个引述,在第一个事务中的第一个选择语句之后应该已经获取写锁。如果这种锁类型应该是独占的,为什么第二个事务可以成功获取写锁并提交? DBMS 是否真的对选定数据保持写锁定?

最佳答案

维基百科在两个方面是错误的:

  1. 这是一个实现细节。 RDBMS 不必那样做。 READ COMMITTED 可以通过使用快照隔离在完全没有读取锁定的情况下实现。
  2. 据我所知,没有 RDBMS 会为读取获取写入锁。这句话含糊不清。

关于database - READ COMMITTED 隔离级别使用什么锁类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24983734/

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