一、事务的定义
1.定义:
事务 是数据库管理系统中的一个逻辑工作单元,它由一组操作组成,这些操作是数据库的增删查改的这种一些类的操作 ,这些操作要么全部成功,要么全部失败。逻辑工作单元 是指在数据库中执行的一组操作,这些操作在逻辑上是一个整体,通常被称为事务。
2.事务的特点(满足一下特点才能够被看作事务):ACID
- 原子性(A):事务中的所有操作要么全部完成,要么全部不执行。
- 一致性(C):事务执行前后,数据库的状态必须保持一致。
- 隔离性(I):并发执行的事务之间相互独立,一个事务的执行不应影响其他事务。
- 持久性(D):一旦事务提交,其结果是永久性的,即使系统崩溃也不会丢失。
- 下面有详细的展开解析
二、事务的状态
1.事务在执行过程中会经历不同的状态,主要包括:
- 新建(New):事务被创建,但尚未开始执行。
- 活跃(Active):事务正在执行中,可以进行操作。
- 部分提交(Partially Committed):事务的所有操作已执行,但尚未提交。
- 提交(Committed):事务的所有操作已成功执行并被永久保存。
- 回滚(Aborted):事务执行失败,所有已执行的操作被撤销,数据库恢复到事务开始前的状态。
2.状态转换
- 从新建到活跃:事务开始执行。
- 从活跃到部分提交:事务执行完所有操作。
- 从部分提交到提交:事务成功提交。
- 从活跃到回滚:事务执行失败,进行回滚。
三、ACID特性
ACID是事务的四个基本特性,确保数据库的可靠性和一致性。
原子性(Atomicity)
- 事务是一个不可分割的操作单元,所有操作要么全部成功,要么全部失败。
- 如果事务中的某个操作失败,整个事务将被回滚,数据库状态恢复到事务开始前的状态。
一致性(Consistency)
- 事务执行前后,数据库必须保持一致性。
- 事务的执行不能破坏数据库的完整性约束(如主键、外键等)。
隔离性(Isolation)
- 并发执行的事务之间相互独立,一个事务的执行不应影响其他事务。
- 数据库系统通过隔离级别来控制事务之间的相互影响。
持久性(Durability)
- 一旦事务提交,其结果是永久性的,即使系统崩溃也不会丢失。
- 数据库系统会将已提交的事务结果写入持久存储(如磁盘)。
四、并发控制
1.使用并发控制的原因:
在多用户环境中,多个事务可能会同时执行,导致数据不一致。为了解决这个问题,数据库系统采用并发控制机制。
2.定义:
并发控制是指在数据库系统中,通过一系列技术和策略来管理多个事务的并发执行,以确保事务之间的相互独立性和数据的一致性。它的目标是防止并发事务在执行过程中产生冲突,导致数据不一致或错误。
3.并发控制的重要性
- 数据一致性:确保多个事务并发执行时,数据库的状态保持一致,避免出现脏读、不可重复读和幻读等问题。
- 提高系统性能:允许多个用户同时访问数据库,提高系统的吞吐量和响应速度。
- 支持多用户环境:在多用户环境中,确保每个用户的操作不会干扰其他用户的操作。
4.并发控制的主要方法:
4.1 锁机制
- 排他锁(Exclusive Lock):一个事务对数据加锁,其他事务无法读取或修改该数据。
- 共享锁(Shared Lock):多个事务可以同时读取数据,但不能修改。
4.2 隔离级别
数据库系统定义了不同的隔离级别,以控制事务之间的相互影响。常见的隔离级别包括:
-
读未提交(Read Uncommitted)
- 允许脏读,最低的隔离级别。
- 一个事务可以读取另一个未提交事务的数据。
-
读已提交(Read Committed)
- 不允许脏读,但可能出现不可重复读。
- 一个事务只能读取已提交的数据。
-
可重复读(Repeatable Read)
- 确保在同一事务中多次读取同一数据得到相同结果,但可能出现幻读。
- 事务在执行期间,读取的数据不会被其他事务修改。
-
串行化(Serializable)
- 最高的隔离级别,完全避免并发问题,但性能较低。
- 事务按顺序执行,确保数据一致性。
4.3 时间戳排序
- 每个事务在开始时被分配一个唯一的时间戳,数据库系统根据时间戳来决定事务的执行顺序。
4.4 乐观并发控制:
假设事务之间不会发生冲突,允许事务在不加锁的情况下执行。在提交时检查是否有冲突,如果有则回滚。
4.5 多版本并发控制(MVCC):
允许多个事务同时读取数据的不同版本,避免锁的竞争,提高并发性能。
五、事务的实现
1. 事务日志
- 数据库系统会记录事务的所有操作,以便在事务失败时进行回滚。
- 事务日志通常包括开始、提交、回滚等操作的记录。
2. 恢复机制
- 数据库系统通过恢复机制来保证事务的持久性和一致性。
- 恢复机制通常包括:
- 重做(Redo):在系统崩溃后,重新执行已提交的事务。
- 撤销(Undo):在事务失败后,撤销已执行的操作。
六、事务的应用
1. 银行系统
- 处理存款、取款、转账等操作,确保账户余额的一致性。
2. 电商平台
- 处理用户下单、支付、订单查询等操作,确保订单状态的准确性。
3. 库存管理
- 实时更新库存状态,处理入库和出库操作,确保库存数据的一致性。
4. 航空订票系统
- 实时处理航班查询、预订和取消,确保座位状态的准确性。
七、总结
- 事务是数据库操作的基本单位,确保数据的一致性和可靠性。
- ACID特性是事务的核心,确保事务的原子性、一致性、隔离性和持久性。
- 并发控制机制确保多个事务同时执行时的数据一致性。
- 事务在银行、电商、库存管理等多个领域有广泛应用。