`

脏读、丢失更新、不可重复读、幻读

 
阅读更多
脏读(Dirty Read):

事务T1更新了数据还未提交,这时事务T2来读取相同的数据,则T2读到的数据其实是错误的数据,即脏数据。基于脏数据所作的操作是不可能正确的

丢失更新:(Lost Update)

事务T1读取了数据,并执行了一些操作,然后更新数据。事务T2也做相同的事,则T1和T2更新数据时可能会覆盖对方的更新,从而引起错误。

不可重复读(Nonrepeatable Read)

一个事务的两次读取中,读取相同的资源得到不同的值。当事务T2在事务T1的两次读取之间更新数据,则会发生此种错误(重点在修改)

幻读(Phantom):
此概念相对难理解一些。
事务T1对一定范围内执行操作,T2对相同的范围内执行不兼容的操作,这时会发生幻读。
如:T1删除符合条件C1的所有数据,T2又插入了一些符合条件C1的数据,则在T1中再次查找符合条件C1的数据还是可以查到,这对T1来说好像是幻觉一样,这时的读取操作称为幻读。(重点在新增或删除)
分享到:
评论

相关推荐

    行业-48 多个事务并发更新以及查询数据,为什么会有脏写和脏读的问题?l.rar

    4. 串行化(Serializable):这是最高的隔离级别,通过锁定事务涉及的所有数据,完全避免了脏读、不可重复读和幻读。然而,这也可能导致较高的并发性能损失,因为事务需要等待其他事务完成。 数据库管理系统如...

    48 多个事务并发更新以及查询数据,为什么会有脏写和脏读的问题?l.pdf

    1. 读未提交(Read Uncommitted):最低的隔离级别,允许事务读取未提交更改的数据,这意味着可能会遇到脏读、不可重复读和幻读问题。 2. 读已提交(Read Committed):保证一个事务只能读取已经提交的数据。在这个...

    mysql数据库事务隔离级别借鉴.pdf

    - **读未提交(Read Uncommitted)**:最低的隔离级别,允许事务读取其他事务未提交的数据,因此可能会出现脏读、不可重复读和幻读。 - **读已提交(Read Committed)**:事务只能看到其他事务已经提交的更改,防止...

    数据库隔离级别扫描.pdf

    在这种情况下,可能会发生脏读、不可重复读和幻读。脏读是指一个事务读取到了另一个事务未提交的修改,这些数据可能最终会被回滚,因此是不正确的。不可重复读则意味着在同一事务内多次读取相同数据,结果可能不同,...

    事务并发的可能问题与其解决方案.docx

    并发事务可能会引发多种问题,如更新丢失、脏读、不可重复读和幻读,这些问题都需要通过适当的事务隔离级别和解决方案来处理。 更新丢失分为第一类更新丢失和第二类更新丢失。前者发生在事务撤销时,其对数据的修改...

    MySQL的四种事务隔离级别

    事务并发问题通常包括脏读、不可重复读和幻读。 一、事务的基本要素(ACID) 事务具有四个基本要素,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability),这四个要素是事务...

    SQL Server中事务处理的隔离级别的实例分析.pdf

    在并发环境中,事务处理可能出现诸如丢失更新、脏读、不可重复读和幻读等问题。丢失更新是指两个事务同时修改同一数据,导致其中一个事务的更新被另一个事务覆盖。脏读是指一个事务读取了另一个未提交事务的数据,而...

    BAT面试必问的20道高频数据库问题解析1

    - **读未提交(read-uncommitted)**:允许脏读和不可重复读、幻读。 - **读已提交(read-committed)**:禁止脏读,但可能发生不可重复读和幻读。 - **可重复读(repeatable-read)**:MySQL默认隔离级别,禁止...

    面试官:什么是MySQL 事务与 MVCC 原理?.doc

    MVCC 是一种并发控制机制,它可以解决脏读、不可重复读和幻读的问题。MVCC 的实现是通过在每个事务中维护一个版本号,当一个事务读取数据时,会检查当前版本号是否与事务开始时的版本号相同,如果不同,则表示其他...

    事务隔离级别和脏读的快速入门

    脏读可导致同一记录得到两个版本,或是完全地丢失一条记录。在同一事务中多次重新运行同一查询后,可能会出现幻读。最近MongoDB登上了Reddit的头条,因为MongoDB的核心开发者DavidGlasser痛苦地认识到MongoDB默认会...

    mysql数据库事务隔离级别[参照].pdf

    3. **不可重复读**:不可重复读发生在同一个事务中,两次执行同样的查询,但得到的结果不同,因为在这两次查询之间,另一个事务修改并提交了数据。 4. **幻读**:幻读是指在一个事务中,两次执行相同的查询,第一次...

    SQL并行更新时丢失数据实例

    例如,在读未提交(READ UNCOMMITTED)级别下,脏读可能导致并行更新看到未提交的数据,而在可重复读(REPEATABLE READ)或串行化(SERIALIZABLE)级别下,幻读或不可重复读可能导致数据丢失。 4. **数据分区**:在...

    MySQL面试题_.pdf

    读未提交可能会导致脏读、不可重复读和幻读;读已提交解决了脏读,但可能产生不可重复读和幻读;可重复读仅防止了不可重复读,但幻读依然存在;可串行化则是最严格的隔离级别,能防止所有上述问题,但可能带来较高的...

    深入理解Mysql锁与事务隔离级别1

    并发事务处理可能遇到的问题包括更新丢失、脏读、不可重复读和幻读等。这些问题可以通过设置不同的事务隔离级别来避免: - 脏读:一个事务读到另一个未提交事务的修改。 - 不可重复读:在同一事务内多次读取同一...

    MySQL大厂常见面试题

    1. 读未提交(Read Uncommitted):允许读取未提交的数据,可能导致脏读、不可重复读和幻读。 2. 读已提交(Read Committed):只读取已提交的数据,避免脏读,但仍然存在不可重复读和幻读。 3. 可重复读...

    SQL Server 2000 70-229中文版部分答案解析(整理版)下

    1. 未提交读(Read Uncommitted):允许读取未提交的数据,可能导致脏读、不可重复读和幻读。 2. 提交读(Read Committed):SQL Server默认级别,每次读取都锁定行,防止脏读,但可能发生不可重复读和幻读。 3. 可...

    DB2的并发性 DB2的并发性

    - 效果:能够有效地防止丢失更新、脏读、不可重复读和幻读。 通过以上对DB2并发性的详细解析,我们可以了解到DB2如何通过锁机制和不同级别的封锁协议来确保多用户环境下的数据完整性和一致性。这为开发者和DBA提供...

    4种隔离级别

    可重复读隔离级别进一步加强了数据的一致性,它禁止了不可重复读和脏读,但在某些情况下可能会遇到幻读(Phantom Read)的问题,即在一个事务内,同样的查询返回的行数在两次查询之间发生变化。这通常发生在事务读取...

    MySQL8.0学习第三章

    - **读未提交**:允许读取未提交数据,可能导致脏读、不可重复读和幻读。 - **读已提交**:只读取已提交的数据,防止脏读,但可能出现不可重复读和幻读。 - **可重复读**(InnoDB默认):防止脏读和不可重复读,...

Global site tag (gtag.js) - Google Analytics