当前位置: 首页 > article >正文

数据库管理系统的ACID都各自是什么?

本文基于DBMS中ACID属性的概念,这些属性保证了数据库中执行事务时保持数据一致性、完整性和可靠性所。事务是访问并可能修改数据库内容的单一逻辑工作单元。交易使用读写操作访问数据。为了保持数据库的一致性,在事务前后,遵循某些属性。这些被称为ACID特性。

一、ACID是什么?

ACID:Automicity原子性、Consistency一致性、Isolation隔离性、Durability持久性
1、Automicity原子性:

原子性是指事务是一个不可分割的工作单位,整个交易要么一次性发生,要么根本不发生。没有中途,即交易没有部分发生。每笔交易都被视为一个单元,要么运行完成,要么根本不执行。它涉及以下两项操作。

—中止:如果交易中止,对数据库所做的更改将不可见。

—提交:如果交易提交,所做的更改是可见的。

原子性也被称为“全有或全无规则”。

2、Consistency一致性:

一致性是指在事务开始之前和事务结束之后,数据库的完整性约束没有被破坏。也就是说,数据库必须始终保持在一个合法的状态。

比如,在转账事务执行前,账户 A 有 200 元,账户 B 有 300 元,总金额为 500 元。在转账事务成功执行后,账户 A 有 100 元,账户 B 有 400 元,总金额仍然是 500 元,这样就保证了数据库的一致性。如果由于某种错误导致账户 A 扣除了 100 元,而账户 B 没有增加相应金额,就破坏了这种一致性。

3、Isolation隔离性:

此属性确保多个事务可以同时发生,而不会导致数据库状态不一致。交易在不受干扰的情况下独立进行。在该事务中的特定更改写入内存或提交之前,任何其他事务中发生的更改将不会对任何其他事务可见。此属性确保并发执行事务将导致与实现的状态等同于以某种顺序连续执行的状态。

假设有两个事务 T1 和 T2 同时在数据库中运行。T1 是查询账户 A 的余额,T2 是从账户 A 中取款。隔离性要求 T1 在查询时,不能受到 T2 取款操作的影响,直到 T2 的取款事务完全完成。如果没有隔离性,T1 可能会查询到一个不一致的余额,例如在 T2 已经从账户 A 中扣除了金额,但还没有更新余额记录时,T1 就进行查询,这样 T1 得到的结果就是不准确的。

4、Durability持久性:

当一个转账事务成功提交后,账户 A 和账户 B 的余额更新结果会被持久化存储到数据库中。即使数据库服务器突然断电,在系统恢复后,这些更新后的余额数据仍然是有效的,不会恢复到转账事务之前的状态。这是通过数据库的日志系统和备份恢复机制来实现的,在事务提交时,数据库会将相关的操作记录到日志中,以便在需要时进行恢复。

二、DBMS中ACID的优势

1原子性优势

1事务完整性保障在数据库操作中,原子性确保了事务作为一个不可分割的单元执行。例如,在一个库存管理系统中,当进行商品入库操作时,可能涉及多个步骤,如更新库存数量、记录入库时间、添加入库批次信息等。如果在更新库存数量后系统出现故障,原子性保证整个入库事务回滚,不会出现部分完成的情况,如只更新了库存数量却没记录入库时间。这使得复杂的业务流程能够完整地执行或不执行,避免了数据的不完整性和错误。

2错误恢复简化原子性有助于简化错误恢复机制。因为事务要么全部成功要么全部失败,数据库管理系统(DBMS)在处理事务故障时,只需要撤销整个事务即可。例如,在数据库事务执行过程中,如果遇到硬件故障、软件错误或者违反了数据库的约束条件,DBMS 可以根据事务日志,简单地将事务回滚到初始状态,而不需要去判断事务中每个操作的状态,这大大降低了错误恢复的复杂性。

2一致性优势

1)数据合法性维护一致性保证了数据库在事务执行前后始终满足预先定义的完整性约束和业务规则。以金融系统为例,银行账户之间的转账操作必须保证总金额不变。在转账事务开始前,所有账户的资金总和是一个固定值,转账事务执行后,通过一致性检查确保这个总和依然不变。这防止了因错误操作或系统故障导致的数据非法状态,如账户余额出现负数(除非业务规则允许)或者数据之间的关联关系被破坏。

2)业务规则遵守数据库中的数据通常需要遵循各种业务规则,一致性特性强制事务遵守这些规则。例如,在一个人力资源管理系统中,员工的职位级别和工资范围可能存在关联关系。当更新员工职位级别时,一致性要求同时检查并更新工资范围以符合业务规则。这样可以确保数据库中的数据始终符合企业的业务逻辑,为企业决策提供可靠的数据支持。

3隔离性优势

1并发事务正确执行隔离性允许多个并发事务同时访问和操作数据库,同时确保每个事务都感觉不到其他事务的存在。在一个在线票务预订系统中,多个用户可能同时尝试预订同一演出的门票。隔离性保证每个用户的预订操作都能独立进行,不会受到其他用户操作的干扰。例如,即使两个用户几乎同时提交预订请求,系统也能通过隔离性机制,如使用锁或者多版本并发控制(MVCC)技术,使得每个请求都能基于正确的、未被其他事务修改的数据进行操作,避免出现数据不一致和错误的预订结果。

2数据一致性维护(并发环境)在并发环境下,隔离性有助于维护数据的一致性。例如,在一个电商平台的库存管理系统中,当多个用户同时购买同一款商品时,隔离性确保每个用户看到的库存数量是准确的,并且在购买过程中,库存的更新操作不会相互干扰。如果没有隔离性,可能会出现一个用户看到有库存但在购买时却因为其他用户的同时购买而导致库存不足的情况,这会导致用户体验下降和数据混乱。

4持久性优势

1数据永久性保证持久性确保一旦事务提交,其对数据库的修改就是永久性的。在企业的财务系统中,财务数据的准确性和永久性至关重要。例如,公司的账目记录、税务申报数据等,一旦经过审核并提交到数据库,就必须保证这些数据在任何情况下都不会丢失。即使发生系统崩溃、硬件故障或者自然灾害等极端情况,通过数据库的备份和恢复机制,结合事务日志,可以在系统恢复后重现提交的事务操作,保证数据的永久性存储。

2)系统可靠性增强从系统层面看,持久性增强了整个数据库系统的可靠性。因为用户和企业可以信任数据库系统能够安全地存储和维护他们的数据,即使面对各种意外事件。这对于依赖数据库的关键业务,如银行的核心业务系统、医院的医疗记录系统等,是至关重要的。用户不用担心数据因为系统问题而丢失,从而提高了用户对系统的信心和满意度。

了解更多数据仓库与数据集成关干货内容请关注>>>FineDataLink官网

免费试用、获取更多信息,点击了解更多>>>体验FDL功能


http://www.kler.cn/a/374997.html

相关文章:

  • 探索 ONLYOFFICE:开源办公套件的魅力
  • GIN 反向代理功能
  • 快速上手 Rust——实用示例
  • Java复习27(PTA)
  • 【分布式技术】分布式序列算法Snowflake深入解读
  • 纯CSS实现UI设计中常见的丝带效果(5)
  • 遗传算法:AI 借鉴生物进化的优化方法
  • HTML练习题 :新闻列表 包含盒子模型,内边距,外边距,鼠标悬停
  • 数据结构模拟题[二]
  • scrapy爬取名人名言
  • 安卓基础001
  • .NET Core WebApi第4讲:控制器、路由
  • LeetCode每日一题3165---不包含相邻元素的子序列的最大和
  • 扩展el-table,实现当showOverflowTooltip时,鼠标可移入tooltip功能
  • 一个免费开源自托管的机器翻译项目,支持API接口
  • 建筑行业知识库搭建:好处、方法与注意事项
  • Chrome和Firefox哪款浏览器的密码管理更安全
  • C++第十讲:继承
  • LeetCode --- 421周赛
  • linux开机自启动三种方式
  • PySpark的使用
  • 一、Go语言快速入门之基础语法
  • python的socket库的基本使用总目录
  • 大语言模型推理源码解读(基于llama3模型:来源github)
  • SpringBoot旋律线:Web音乐网站构建
  • 基于SSM医药进出口交易系统的设计