事务的特性事务并发问题隔离级别事务传播属性
时间: 2024-08-26 11:00:33 浏览: 29
事务是数据库操作的一个逻辑单元,它保证了数据的一致性和完整性。事务有四个基本特性,也称为ACID特性:
1. **原子性** (Atomicity):事务中的所有操作要么全部完成,要么全部不做,不会部分执行。
2. **一致性** (Consistency):事务开始前和结束后,数据库的数据都要保持在一致的状态。
3. **隔离性** (Isolation):确保并发环境下的事务看起来像是独自运行,互不影响,包括读未提交、已提交和序列化等隔离级别。
4. **持久性** (Durability):一旦事务提交,其对数据库的影响是永久的,即使系统崩溃也能恢复。
在并发环境下,隔离级别用于解决可能出现的问题,常见的隔离级别有:
- **读未提交(Read Uncommitted)**:允许读取其他事务未提交的数据,可能导致脏读。
- **已提交(Read Committed)**:只读取已经提交的数据,避免脏读,但仍存在幻读。
- **可重复读(Repeatable Read)**:在此级别下,一次事务的多次读取结果不变,但可能会看到幻灭现象(因为其他事务的插入)。
- **串行化(Serializable)**:最严格的级别,强制事务按照某种顺序执行,完全消除幻读。
事务传播属性定义了当在一个事务中调用另一个事务时的行为,如:
- **支持(Support)**:默认值,如果目标操作在当前事务中,就执行。
- ** Requires**:只有当目标操作成功才会继续。
- ** Not Supported**:禁止嵌套事务。
- ** Requires New**:在新的事务上下文中执行。
- ** MANDATORY**:如果目标操作在事务中,强制其成为新事务的一部分。
- ** REQUIRES NEW**:总是新建一个新的事务来执行。