问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

DBMS中的事务:深入解析ACID属性

创作时间:
作者:
@小白创作中心

DBMS中的事务:深入解析ACID属性

引用
CSDN
1.
https://blog.csdn.net/mzgxinhua/article/details/138972295

在数据库管理系统(DBMS)中,事务的处理需要遵循ACID属性,以确保数据的可靠性和一致性。ACID属性包括原子性、一致性、隔离性和持久性,它们共同作用,为数据库操作提供了坚实的基础保障。


ACID属性是指为保证数据事务的可靠性和一致性而提供的一组基本保证。ACID 代表原子性一致性隔离性和耐久性

原子性确保交易被视为一个不可分割的单元,要么执行其所有操作,要么根本不执行任何操作。
一致性可确保数据库在事务之前和之后保持有效状态。
隔离可确保并发事务不会相互干扰,从而保持数据完整性。
持久性保证了一旦提交事务,其影响是永久性的,并且在任何系统故障中都能幸存。这些属性共同确保了 DBMS 操作的可靠性并保持了数据完整性。

什么是数据库事务?

事务是访问和更新数据库内容的逻辑工作单元。事务使用读取和写入操作来访问数据。事务有多种状态:

State 描述
积极 交易正在进行中。
部分承诺 操作已完成,但数据尚未保存。
失败 事务未通过数据库恢复系统检查。
承诺 成功完成,更改永久保存。
中止 事务未通过测试、回滚或中止。
终止 事务已终止,系统已准备好进行新事务。

DBMS中的ACID属性是什么?

ACID 属性是一组属性,用于保证在数据库管理系统 (DBMS) 中可靠地处理事务。事务是作为单个工作单元执行的一系列数据库操作,ACID 属性可确保在 DBMS 中可靠且一致地处理事务。

  • Atomicity 属性可确保事务要么完全执行,要么根本不执行。
  • Consistency 属性可确保数据库在事务之前和之后保持一致的状态。
  • Isolation 属性可确保多个事务可以并发运行而不会相互干扰。
  • Durability 属性可确保已提交事务的结果是永久性的,并且不会因系统故障而丢失。
    总之,这些属性确保在DBMS中可靠且一致地处理事务,这对于数据库中数据的完整性和准确性至关重要。

1. DBMS中的原子性

术语原子性是 DBMS 中的 ACID 属性,指的是数据保持原子化的事实。这意味着如果对数据进行任何操作,则应完全执行或根本不执行。这也意味着操作不应中断或仅完成一半。在对事务执行操作时,操作应全部完成,而不是部分完成。如果任何操作未完全完成,事务将中止。

有时,当前操作将运行,然后进入具有更高优先级的操作。这将停止当前操作,并且当前操作将中止。

在给定的场景中,如果两个用户同时尝试预订火车上唯一可用的座位,则交易被视为未完成。根据atomicity的说法,第一个成功点击预订按钮的用户将预订座位并收到通知,而第二个用户的交易将被回滚,并且他们将收到没有更多座位可用的通知。

在一个更简单的例子中,如果一个人尝试预订机票,选择一个座位,然后继续支付网关,但由于银行服务器问题而遇到故障,他们预订的座位将不会为他们保留。完整的交易包括预订座位和完成付款。如果任何步骤失败,则操作将中止,并且用户将恢复到初始状态,而不会保留其席位。

DBMS中的原子性通常被称为“全有或全无”规则。

2. DBMS的一致性

此 ACID 属性将验证列车中剩余座位总数 + 用户预订的座位总数 = 列车中存在的座位总数。每次交易后,都会检查一致性以确保没有出错。

让我们考虑一个示例,其中一个人试图预订机票。他们可以预订座位,但由于银行问题,他们的付款尚未完成。在这种情况下,他们的事务将回滚。但仅仅这样做是不够的。可用席位数也必须更新。 否则,如果不更新,则会出现不一致的情况,即该人放弃的座位不计入。因此,如果不是为了一致性,列车上剩余的座位总数+用户预订的座位总数将不等于列车上的座位总数。

3. DBMS中的隔离

隔离被定义为一种分离状态。隔离是 DBMS 中的一个 ACID 属性,其中来自一个数据库的任何数据都不应影响另一个数据库,并且可以同时发生许多事务。 换句话说,当数据库的第一个状态的操作完成时,数据库的第二个状态的进程应该开始。它表示如果对两个不同的数据库执行两个操作,则一个数据库的值可能不会受到另一个数据库的值的影响。在事务的情况下,当两个或多个事务同时发生时,应保持一致性。在一个事务中所做的任何修改都不会对其他事务可见,直到更改提交到内存中。

假设两个人尝试同时预订同一个座位。对事务进行序列化以保持数据一致性。第一个人的交易成功,他们收到一张票。第二个人的交易失败,因为座位已经预订。他们会收到一条错误消息,指示没有可用座位。

4. DBMS的耐久性

DBMS 中的 ACID 属性持久性是指如果操作成功完成,数据库将永久保留在磁盘中。数据库的持久性应使得即使系统出现故障或崩溃,数据库也能生存。但是,如果数据库丢失,恢复管理器负责保证数据库的长期可行性。每次进行更改时,都必须使用 COMMIT 命令来提交值。

假设铁路管理系统中出现系统故障,导致所有预订的列车详细信息丢失。数以百万计付费的用户现在无法登上火车,造成了巨大的经济损失,并削弱了对公司的信任。情况尤为严峻,因为这些列车是出于重要原因需要的,造成了广泛的恐慌和不便。

ACID特性在DBMS中的优势

  • 数据完整性:ACID 属性确保数据保持一致且不会损坏。
  • 可靠性:ACID 属性提供一致且可靠的交易执行。
  • 并发控制:ACID 属性允许同时访问数据而不会发生冲突。
  • 容错:ACID 属性可确保数据持久性,在系统故障中幸存下来。
  • 交易管理:ACID物业提供结构化交易处理。
  • 合规性和可审计性:ACID属性有助于法规遵从性和审计。

DBMS中ACID特性的缺点

  • 性能开销:由于额外的处理和资源利用率,ACID 属性可能会影响系统性能和吞吐量。
  • 复杂性:实现 ACID 属性会增加数据库系统的复杂性,从而增加设计和维护方面的挑战。
  • 可扩展性挑战:ACID 属性可能会在高度分布式或可扩展的系统中造成困难,从而限制可扩展性。
  • 死锁的可能性:使用锁定机制的 ACID 事务可能导致死锁和系统停止。
  • 有限并发:ACID 属性可能会限制并发性,从而影响整体系统吞吐量。
  • 恢复复杂性:ACID 属性在恢复和备份策略中引入了复杂性。
  • 与可用性的权衡:在某些情况下,严格遵守 ACID 属性可能会影响系统可用性。

结论

DBMS中的ACID属性确保了可靠和健壮的数据管理:

  1. 原子数:事务被视为不可分割的单元,确保所有更改都已提交或根本不提交。
  2. 一致性:数据库在事务之前和之后保持有效状态,强制执行预定义的规则和约束。
  3. 隔离:并发事务不会相互干扰,从而防止数据不一致。
  4. 耐久性:提交的更改将被永久保存,并在系统故障后继续存在,从而确保数据的可靠性。

遵循这些属性可确保数据库系统中的数据完整性、一致性、隔离性和持久性。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号