【数据库系统概论】事务

一、事务的定义

1.定义:

事务 是数据库管理系统中的一个逻辑工作单元,它由一组操作组成,这些操作是数据库的增删查改的这种一些类的操作 ,这些操作要么全部成功,要么全部失败。逻辑工作单元 是指在数据库中执行的一组操作,这些操作在逻辑上是一个整体,通常被称为事务

2.事务的特点(满足一下特点才能够被看作事务):ACID

  • 原子性(A):事务中的所有操作要么全部完成,要么全部不执行。
  • 一致性(C):事务执行前后,数据库的状态必须保持一致。
  • 隔离性(I):并发执行的事务之间相互独立,一个事务的执行不应影响其他事务。
  • 持久性(D):一旦事务提交,其结果是永久性的,即使系统崩溃也不会丢失。
  • 下面有详细的展开解析

二、事务的状态

1.事务在执行过程中会经历不同的状态,主要包括:

  1. 新建(New):事务被创建,但尚未开始执行。
  2. 活跃(Active):事务正在执行中,可以进行操作。
  3. 部分提交(Partially Committed):事务的所有操作已执行,但尚未提交。
  4. 提交(Committed):事务的所有操作已成功执行并被永久保存。
  5. 回滚(Aborted):事务执行失败,所有已执行的操作被撤销,数据库恢复到事务开始前的状态。

2.状态转换

  • 从新建到活跃:事务开始执行。
  • 从活跃到部分提交:事务执行完所有操作。
  • 从部分提交到提交:事务成功提交。
  • 从活跃到回滚:事务执行失败,进行回滚。

三、ACID特性

ACID是事务的四个基本特性,确保数据库的可靠性和一致性。

原子性(Atomicity)

  • 事务是一个不可分割的操作单元,所有操作要么全部成功,要么全部失败。
  • 如果事务中的某个操作失败,整个事务将被回滚,数据库状态恢复到事务开始前的状态。

一致性(Consistency)

  • 事务执行前后,数据库必须保持一致性。
  • 事务的执行不能破坏数据库的完整性约束(如主键、外键等)。

隔离性(Isolation)

  • 并发执行的事务之间相互独立,一个事务的执行不应影响其他事务。
  • 数据库系统通过隔离级别来控制事务之间的相互影响。

持久性(Durability)

  • 一旦事务提交,其结果是永久性的,即使系统崩溃也不会丢失。
  • 数据库系统会将已提交的事务结果写入持久存储(如磁盘)。

四、并发控制

1.使用并发控制的原因:

在多用户环境中,多个事务可能会同时执行,导致数据不一致。为了解决这个问题,数据库系统采用并发控制机制。

2.定义:

并发控制是指在数据库系统中,通过一系列技术和策略来管理多个事务的并发执行,以确保事务之间的相互独立性和数据的一致性。它的目标是防止并发事务在执行过程中产生冲突,导致数据不一致或错误。

3.并发控制的重要性

  1. 数据一致性:确保多个事务并发执行时,数据库的状态保持一致,避免出现脏读、不可重复读和幻读等问题。
  2. 提高系统性能:允许多个用户同时访问数据库,提高系统的吞吐量和响应速度。
  3. 支持多用户环境:在多用户环境中,确保每个用户的操作不会干扰其他用户的操作。

4.并发控制的主要方法:

4.1 锁机制

  • 排他锁(Exclusive Lock):一个事务对数据加锁,其他事务无法读取或修改该数据。
  • 共享锁(Shared Lock):多个事务可以同时读取数据,但不能修改。

4.2 隔离级别

数据库系统定义了不同的隔离级别,以控制事务之间的相互影响。常见的隔离级别包括:

  1. 读未提交(Read Uncommitted)

    • 允许脏读,最低的隔离级别。
    • 一个事务可以读取另一个未提交事务的数据。
  2. 读已提交(Read Committed)

    • 不允许脏读,但可能出现不可重复读。
    • 一个事务只能读取已提交的数据。
  3. 可重复读(Repeatable Read)

    • 确保在同一事务中多次读取同一数据得到相同结果,但可能出现幻读。
    • 事务在执行期间,读取的数据不会被其他事务修改。
  4. 串行化(Serializable)

    • 最高的隔离级别,完全避免并发问题,但性能较低。
    • 事务按顺序执行,确保数据一致性。

4.3 时间戳排序

  • 每个事务在开始时被分配一个唯一的时间戳,数据库系统根据时间戳来决定事务的执行顺序。

4.4 乐观并发控制

假设事务之间不会发生冲突,允许事务在不加锁的情况下执行。在提交时检查是否有冲突,如果有则回滚。

4.5 多版本并发控制(MVCC)

允许多个事务同时读取数据的不同版本,避免锁的竞争,提高并发性能。

五、事务的实现

1. 事务日志

  • 数据库系统会记录事务的所有操作,以便在事务失败时进行回滚。
  • 事务日志通常包括开始、提交、回滚等操作的记录。

2. 恢复机制

  • 数据库系统通过恢复机制来保证事务的持久性和一致性。
  • 恢复机制通常包括:
    • 重做(Redo):在系统崩溃后,重新执行已提交的事务。
    • 撤销(Undo):在事务失败后,撤销已执行的操作。

六、事务的应用

1. 银行系统

  • 处理存款、取款、转账等操作,确保账户余额的一致性。

2. 电商平台

  • 处理用户下单、支付、订单查询等操作,确保订单状态的准确性。

3. 库存管理

  • 实时更新库存状态,处理入库和出库操作,确保库存数据的一致性。

4. 航空订票系统

  • 实时处理航班查询、预订和取消,确保座位状态的准确性。

七、总结

  • 事务是数据库操作的基本单位,确保数据的一致性和可靠性。
  • ACID特性是事务的核心,确保事务的原子性、一致性、隔离性和持久性。
  • 并发控制机制确保多个事务同时执行时的数据一致性。
  • 事务在银行、电商、库存管理等多个领域有广泛应用。
相关推荐
囧囧 O_o15 分钟前
Java 实现 Oracle 的 MONTHS_BETWEEN 函数
java·oracle
m0_7482546616 分钟前
MySQL和SQL server的区别
数据库·mysql
补三补四18 分钟前
Yashan DB 实例
数据库·oracle·dba
椰椰椰耶1 小时前
【redis】全局命令set、get、keys
数据库·redis·缓存
月落星还在1 小时前
Redis 内存淘汰策略深度解析
数据库·redis·缓存
左灯右行的爱情1 小时前
Redis- 切片集群
数据库·redis·缓存
LKAI.1 小时前
MongoDB用户管理和复制组
linux·数据库·mongodb
PinkandWhite1 小时前
MySQL复习笔记
数据库·笔记·mysql
熬夜苦读学习2 小时前
库制作与原理
linux·数据库·后端
cmgdxrz3 小时前
Mysql中的常用函数
数据库·mysql