我发现维基百科文章中存在矛盾,不确定错误在哪里(或者我可能无法正确理解)。
根据Read committed isolation level中的Wikipedia:
"在此隔离级别中,基于锁的并发控制DBMS 实现保持写锁(在选定数据上获取),直到 事务结束,但读锁定尽快释放 执行SELECT操作(因此不可重复读取现象 可以发生在这种隔离级别,如下所述)"
进一步解释在{read committed isolation level>中可能发生的Non-repeatable reads phenomena:
交易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;
根据第一个引用,应该在第一个事务中的第一个select语句之后获取一个写锁定。为什么第二个事务可以成功获取写锁定并提交,如果这个锁定类型应该是独占的? DBMS是否真的对所选数据保持写锁定?
答案 0 :(得分:3)
维基百科在两个方面是错误的: