什么是脏数据,脏读,不可重复读,幻觉读?
以下几个术语常见于数据库文章、论文。操作系统分析中亦有涉及。
脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。因
为这个数据是还没有提交的数据,那么另外一个事务读到的这个数据是脏数据,依据脏数据所做的操作可能是不正确的。
不可重复读是指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。那么,在第一个事务中的两次读数据之间,由于第二
个事务的修改,那么第一个事务两次读到的数据可能是不一样的。这样就发生了在一个事务内两次读到的数据是不一样的,因此称为是不可重复读。
幻觉读是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。同时,第二个事务也修改这
个表中的数据,这种修改是向表中插入一行新数据。那么,以后就会发生操作第一个事务的用户发现表中还有没有修改的数据行,就好象发生了幻觉一样。
转自:http://zgqhyh.iteye.com/blog/104726
分享到:
相关推荐
### 脏读、不可重复读与幻读详解 #### 一、概念解析 在数据库管理系统(DBMS)中,为了确保数据的一致性和完整性,引入了事务(Transaction)的概念。事务通常具备四个特性:原子性(Atomicity)、一致性(Consistency)、...
并发控制的主要目标是避免事务之间的冲突,防止出现诸如脏读、不可重复读和幻读等问题。 脏读发生在事务T1读取了事务T2还未提交的修改数据,然后T2因为某种原因回滚了更改。在这种情况下,T1读到的数据实际上是错误...
1. 读未提交(Read Uncommitted):允许读取未提交的数据,可能导致脏读、不可重复读、幻读。 2. 读提交(Read Committed):仅能读取已提交的数据,避免脏读,但仍可能遇到不可重复读和幻读。 3. 可重复读...
- 读未提交(Read Uncommitted):最低的隔离级别,允许事务读取尚未提交的数据变更,可能会导致脏读、不可重复读和幻读。 - 读已提交(Read Committed):保证一个事务只能读取已经提交的事务所做的修改,可以防止...
- 可重复读(Repeatable Read):在同一事务内,多次读取相同数据的结果保持一致,防止脏读和不可重复读,但可能存在幻读。 - 串行化(Serializable):最严格的隔离级别,通过锁定所有涉及的行,确保事务按顺序执行...
它通过控制不同事务对共享资源的访问,防止并发操作带来的数据冲突,如丢失更新、脏读、不可重复读和幻觉读等常见问题。 1. 丢失更新:当两个事务同时对同一数据行进行更新时,最后一个更新会覆盖掉第一个事务的...
锁的运用是并发控制的核心,它能够在多用户环境中协调不同事务的操作,防止数据冲突和异常状态的出现,如脏读、不可重复读和幻觉读。 ### 并发控制的重要性 在现代数据库系统中,尤其是像Oracle这样的大型关系型...
不同的隔离级别决定了事务如何处理脏读、不可重复读和幻读等问题。 4. **脏读、不可重复读和幻读**: - 脏读:一个事务读到了另一个未提交事务的数据修改。 - 不可重复读:同一事务中,两次读取同一数据,结果不...
数据库事务与隔离级别 数据库事务是指一系列操作的集合,作为一个单元执行,以维护数据库的一致性和...数据库提供了多种隔离级别以避免这些问题,例如Serializable(串行化)可以避免脏读、不可重复读、幻读的发生。
不可重复读可以通过可重复读(Repeatable Read)隔离级别解决,事务A在整个事务期间都能看到一致性视图,不受其他事务的影响。 4. **幻觉读**:事务A在读取数据后,事务B插入了新的行,导致事务A再次读取时看到“新...
- **定义**:最高级别的隔离级别,确保所有 SQL 操作按顺序执行,彻底解决脏读、不可重复读及幻读等问题。 - **特点**:虽然能保证数据一致性,但性能较低。 ### 幻读 - **定义**:在同一事务下,连续执行相同的 ...
- 序列化(Serializable):最高隔离级别,防止脏读、不可重复读和幻读,但并发性能最低。 在SQL Server中,通过设置事务的隔离级别,可以控制这些并发问题的程度。正确理解和使用事务和锁对于开发高效且可靠的...
- **读未提交(Read Uncommitted)**:最低的隔离级别,允许事务读取未提交的数据,可能会出现脏读、不可重复读和幻读。 - **读已提交(Read Committed)**:只能读取已经提交的数据,可以避免脏读,但仍然可能出现...
* 未提交读(Read Uncommitted):脏读、不可重复读和虚读都有可能发生。 * 已提交读(Read Committed):避免脏读。但是不可重复读和虚读有可能发生。 * 可重复读(Repeatable Read):避免脏读和不可重复读。但是...
并发控制的主要目标是防止多个事务在执行过程中产生冲突,例如丢失更新、脏读、不可重复读和幻读等问题。以下是一些关键知识点: 1. **事务**: 事务是数据库操作的基本单位,具有原子性、一致性、隔离性和持久性...
总结来说,数据库的四种隔离级别分别是读未提交、读已提交、可重复读和串行化,它们分别针对不同的并发问题:脏读、不可重复读和幻读。理解这些隔离级别及其相互关系,对于理解和优化数据库系统的并发行为至关重要。...
它基于事务的ACID(原子性、一致性、隔离性、持久性)特性中的隔离性,旨在防止脏读、不可重复读和幻读等问题的发生。让我们逐一解析这些概念: 1. **脏读**:当一个事务读取了另一个未提交事务修改的数据,如果这...
4. **串行化(Serializable)**:最严格的隔离级别,所有事务按顺序执行,防止脏读、不可重复读和幻读,但可能降低并发性能。 通过`SET TRANSACTION ISOLATION LEVEL`语句可以设置事务隔离级别。 在实际应用中,...