首页 > 编程知识 正文

mysql怎么解决幻读(mysql如何解决脏读)

时间:2023-05-03 15:03:13 阅读:97089 作者:4156

我在这里分享一个关于MySQL的可重复介绍,非常好,可以解决一些疑惑。链接如下所示。

SQL 1992标准中幻影的解释;

“事务T1根据一些查询条件读取一些数据行,然后事务T2执行SQL语句来插入一行或多行符合查询条件的数据。此时,如果事务T1重复与第一个查询相同的操作,它将获得不同的数据行。”

魔法读取比不可重复读取更重要,强调两次查询得到的行数不同(或多或少),或者行数相同但不是同一个批次(被替换)。

这是英文原版:

P3(“幻影”): SQL-事务T1读取第N行的集合

满足某些搜索条件。然后是T2事务

执行生成一行或多行的SQL语句

满足SQL-事务T1使用的搜索条件。如果

然后,事务T1用相同的

搜索条件,它获得不同的行集合。

而且,从定义上来说,SQL标准的可重复阅读并不能解决错觉阅读问题。

但是MySQL的可重复读取的标准比SQL的高。具体来说,当仅使用select语句时,不会发生幻像读取(这种情况简称为幻像读取),但当发生与写入相关的操作时,会发生幻像读取(这种情况简称为幻像写入)。

例如,一个事务在被选择两次时可以获得相同的行数和相同的值,并且没有错觉读取。但是,在更新或插入操作期间报告了一个错误,可以发现有额外的行不存在,就像一个幻觉。

你读的英语是幻影。幻读可以理解为幻读的一种情况,幻写则是另一种情况。根据定义,幻像读取和幻像写入都可以理解为幻像读取。

所以这就解释了为什么有些文章会说MySQL的可重复阅读可以防止一些错觉阅读的情况。

另外,从面试的角度来看,如果不强调MySQL,可以忽略,只需按照SQL中错觉阅读和可重复阅读的定义来回答即可。如果面试官问MySQL的特殊情况,可以根据MySQL本身的运行机制和自己的实践经验来回答。

参考:

MySQL的可重复介绍:

https://blog . pytian.com/understanding-MySQL-隔离-级别-可重复-已读

以下是1992年SQL标准中对Phantom的原始描述。网页加载较慢,网页加载后会全文搜索关键词“幻影”:

http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。