【发布时间】:2019-06-16 04:51:17
【问题描述】:
来自 MySQL 手册:
阅读未提交
SELECT 语句以非锁定方式执行,但可能会使用行的早期版本。因此,使用这个隔离级别,这样的读取是不一致的。 这也称为脏读。否则,此隔离级别的工作方式类似于 READ COMMITTED。
粗体部分让我感到困惑。 “可能会使用早期版本的行”?用在什么地方?这怎么能称为“脏读”?
SQL 标准说脏读包含从未存在的数据:
P1(“脏读”):SQL 事务 T1 修改一行。 SQL 事务 T2 然后在 T1 执行 COMMIT 之前读取该行。如果 T1 然后执行 ROLLBACK,则 T2 将读取从未提交的行,因此可能被认为从未存在。
这里是 MySQL 手册错误还是什么?
【问题讨论】:
-
你改了字! 可能被认为从未存在过 != 从未存在过
标签: mysql read-uncommitted dirtyread