事务 Transaction 的基础特性
Contents
事务(Transaction)是数据库管理系统执行过程中的一个逻辑单位,它由一个或多个数据库操作组成,这些操作要么全部执行成功,要么全部不执行,以保证数据的一致性和完整性。
ACID 是事务的四个重要特性:
原子性(Atomicity);
一致性(Consistency);
隔离性(Isolation);不同的隔离级别:
- 读未提交(Read Uncommitted):最低的隔离级别。一个事务可以读取另一个未提交事务的数据。
- 可能会出现脏读(Dirty Read)的情况。
脏读是指一个事务读取了另一个尚未提交的事务修改的数据。eg.事务 T1 修改了一条记录但尚未提交,事务 T2 在这个时候读取了这条被修改的记录。如果 T1 后来回滚了,那么 T2 读取的数据就是无效的、“脏” 的数据。
- 可能会出现脏读(Dirty Read)的情况。
- 读已提交(Read Committed):
- 可能会出现不可重复读(Non - Repeatable Read)的问题。
不可重复读是指在一个事务内,多次读取同一数据,由于其他事务的修改操作,导致每次读取的结果不同。
- 可能会出现不可重复读(Non - Repeatable Read)的问题。
- 可重复读(Repeatable Read):
- 可能会出现幻读(Phantom Read)的情况。
当一个事务(T1)按照一定的条件进行数据读取操作时,第一次读取没有发现满足条件的某些行(记录)。但是在这个事务还没有结束的时候,另一个事务(T2)插入(或删除)了一些满足(或原本满足)T1 查询条件的行。当 T1 再次按照相同的条件进行读取时,就会发现比第一次读取时更多(或更少)的符合条件的行,这些 “凭空出现” 或 “突然消失” 的行就像 “幻觉” 一样,所以被称为幻读。
- 可能会出现幻读(Phantom Read)的情况。
- 串行化(Serializable):最高的隔离级别。牺牲了数据库的并发性能。
- 读未提交(Read Uncommitted):最低的隔离级别。一个事务可以读取另一个未提交事务的数据。
持久性(Durability)。