数据库事务是为了保证操作的完整性和统一性引入的。脏读、不可重复读和幻读都是并发控制中常见的问题
数据库事务的特性通常被称为ACID特性
1. Atomicity 原子性:
事务是数据库的一个原子操作单元,其操作要么全部执行,要么全部不执行。
2.Consistency 一致性:
事务开始前后,数据库都必须处于一致性状态。这就意味着一个事务的执行不能违反完整性约束。
3. Isolation 隔离性:
在并发环境中,当多个事务同时执行时,每个事务都应该认为它是唯一在系统中执行的,即一个事务的执行不应该被其他事务干扰。
4. Durability 持久性:
一旦事务提交,则其所做的修改将永久保存在数据库中。即使系统崩溃,持久性也会确保事务的持久性。
脏读:
指一个事务读取了另一个事务尚未提交的数据。如果那个事务因某种原因回滚,那么前一个事务读到的数据就是错误的。
不可重复读:
在同一个事务内,一个数据项的多次读取结果不同。这是因为其他事务在这两次读取之间修改了这个数据项。
幻读:
在同一个事务内,第一次查询某个范围的记录时和稍后再次查询此范围的记录时,记录的数量发生了变化。这是因为其他事务插入或删除了一些记录。