DBMS 中的事务管理:什么是 ACID 属性?

什么是数据库事务?

A 数据库事务 是 DBMS 中的逻辑处理单元,涉及一个或多个数据库访问操作。简而言之,数据库事务代表任何企业的真实事件。

在 DBMS 中,开始和结束事务语句之间进行的所有类型的数据库访问操作都被视为单个逻辑事务。在事务期间,数据库是不一致的。只有提交数据库后,状态才会从一个一致状态更改为另一个一致状态。

数据库事务
数据库事务

关于数据库事务的事实

  • 事务是一个程序单元,其执行可能会或不会改变数据库的内容。
  • DBMS 中的事务概念是作为一个单独的单元执行的。
  • 如果数据库操作不更新数据库而只是检索数据,这种类型的事务称为只读事务。
  • 成功的事务可以将数据库从一个一致状态更改为另一个一致状态
  • DBMS 事务必须是原子的、一致的、隔离的和持久的
  • 如果数据库在事务之前处于不一致状态,则事务之后它将保持不一致状态。

为什么事务中需要并发?

数据库是共享资源,可供多个用户和进程同时使用。例如,银行系统、铁路和航空预订系统、股市监控、超市库存和结账等。

不管理并发访问可能会产生以下问题:

  • 硬件故障和系统崩溃
  • 并发执行同一事务, 僵局或性能下降

交易状态

DBMS 中事务概念的各种状态如下所列:

交易类型
活跃状态 当执行过程开始时,事务进入活动状态。在此状态期间,可以执行读取或写入操作。
部分承诺 事务结束后,事务进入部分提交状态。
承诺状态 当事务被提交到状态时,它已经成功执行完毕。而且,它的所有更改都永久记录到数据库中。
失败状态 当任何一项检查失败或者事务处于活动状态时中止时,事务即视为失败。
终止状态 当某些正在离开系统的事务无法重新启动时,事务状态达到终止状态。
状态转换图
数据库事务的状态转换图

让我们研究一下 状态转换图 这突出了交易如何在这些不同状态之间移动。

  1. 一旦事务声明执行,它就会变为活动状态。它可以发出 READ 或 WRITE 操作。
  2. 一旦读取和写入操作完成,事务就会变成部分提交状态。
  3. 接下来,一些恢复协议需要确保系统故障不会导致无法永久记录事务中的更改。如果此检查成功,则事务将提交并进入已提交状态。
  4. 如果检查失败,交易将进入失败状态。
  5. 如果事务在处于活动状态时被中止,则将进入失败状态。应回滚事务以撤消其对数据库的写入操作的影响。
  6. 终止状态是指事务离开系统。

什么是 ACID 属性?

酸性质 用于在事务处理过程中维护数据库的完整性。DBMS 中的 ACID 代表 A连贯性, C坚持, I解脱,和 D耐用性。

  • Atom冰城: 交易是单个操作单元。您可以完全执行它,也可以根本不执行它。不能部分执行。
  • 坚持是关键 一旦事务执行,它就应该从一个一致状态转移到另一个一致状态。
  • 隔离: 事务应与其他事务隔离执行(无锁)。在并发事务执行期间,同时执行的事务的中间事务结果不应相互访问。(级别 0,1,2,3、XNUMX、XNUMX、XNUMX)
  • 耐用性:· 成功完成事务后,数据库中的更改应该保留下来。即使在系统发生故障的情况下。

DBMS 中的 ACID 属性及示例

下面是 DBMS 中 ACID 属性的一个示例:

Transaction 1: Begin X=X+50, Y = Y-50 END
Transaction 2: Begin X=1.1*X, Y=1.1*Y END

交易 1 是将 50 美元从账户 X 转移到账户 Y。

交易 2 是向每个账户存入 10% 的利息。

如果两个事务一起提交,则不能保证事务 1 会在事务 2 之前执行,反之亦然。无论顺序如何,结果都必须像事务一个接一个地连续发生一样。

交易类型

根据应用领域

  • 非分布式与分布式
  • 补偿交易
  • 交易时机
  • 在线与批量

基于行动

  • 两步
  • 受限
  • 行动模型

基于结构

  • 平面或简单事务:它由在开始和结束操作之间执行的一系列原始操作组成。
  • 嵌套事务:包含其他事务的事务。
  • 工作流程

什么是时间表?

调度是创建多个并行事务的单个组并逐个执行它们的过程。它应该保留指令在每个事务中出现的顺序。如果两个事务同时执行,一个事务的结果可能会影响另一个事务的输出。

例如:

Initial Product Quantity is 10
Transaction 1: Update Product Quantity to 50
Transaction 2: Read Product Quantity

如果事务2在事务1之前执行,会读到过期的产品数量信息,因此需要制定调度计划。

数据库中的并行执行是不可避免的。但是,当同时执行的事务之间存在等价关系时,才允许并行执行。这种等价关系有 3 种类型。

结果等价:

如果两个计划在执行后显示相同的结果,则称为结果等效计划。它们可能对某些值提供相同的结果,而对另一组值提供不同的结果。例如,一个事务更新产品数量,而另一个事务更新客户详细信息。

查看等效性

当两个计划中的事务执行类似的操作时,就会发生视图等效性。例如,一个事务在产品表中插入产品详细信息,而另一个事务在存档表中插入产品详细信息。事务相同,但表不同。

冲突等价性

在这种情况下,两个事务更新/查看同一组数据。事务之间存在冲突,因为执行顺序会影响输出。

什么是可序列化?

可串行化是寻找并发调度的过程,其输出等于串行调度,其中事务一个接一个地执行。根据调度的类型,有两种类型的可串行化:

  • 冲突
  • 首页

总结

  • 事务管理是 DBMS 中的逻辑处理单元,它涉及一个或多个数据库访问操作
  • 事务是一个程序单元,它的执行可能会或可能不会改变数据库的内容。
  • 不管理并发访问可能会导致硬件故障和系统崩溃等问题。
  • 活跃、部分提交、已提交、失败和终止是重要的交易状态。
  • ACID 属性的完整形式 DBMS is Atom一致性、隔离性和持久性
  • 三种 DBMS 事务类型基于应用领域、操作和结构。
  • 计划是创建多个并行事务的单个组并逐一执行它们的过程。
  • 可串行化是寻找一个并发计划的过程,该计划的输出等于事务一个接一个执行的串行计划。