数据库管理系统的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.rhkb.cn/news/461595.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ssm基于vue搭建的新闻网站+vue

系统包含:源码论文 所用技术:SpringBootVueSSMMybatisMysql 免费提供给大家参考或者学习,获取源码请私聊我 需要定制请私聊 目 录 目 录 I 摘 要 III ABSTRACT IV 1 绪论 1 1.1 课题背景 1 1.2 研究现状 1 1.3 研究内容 2 [2 系统…

OB_GINS_day3

这里写目录标题 实现当前状态初始化实现预积分的初始化由于此时preintegration_options 是3(也就是考虑odo以及earth rotation)为预积分的容器添加需要积分的IMU积分因子接下来是添加新的IMU到preintegration中 实现当前状态初始化 这个state_curr的主要…

如何优化kafka和mysql处理百万级消息计算和落库

一.业务场景 最近业务需要,做了性能优化操作。百万级消息在kafka中秒级传输。cpu密集计算分钟级完成,然后在mysql中秒级落库.模型cpu计算提高了1倍,落表速度提高了5倍,2分钟内完成. 如下序列图: 业务系统A发送千级别…

深度学习基础知识-Batch Normalization(BN)超详细解析

一、背景和问题定义 在深层神经网络(Deep Neural Networks, DNNs)中,层与层之间的输入分布会随着参数更新不断发生变化,这种现象被称为内部协变量偏移(Internal Covariate Shift)。具体来说,由…

NLP算法工程师精进之路:顶会论文研读精华

1.学术能力培养 全部论文资料下载: 将论文和 GitHub 资源库匹配 papers with code https://paperswithcode.com/OpenGitHub 新项目快报Github pwc:https://github.com/zziz/pwc GitXiv:http://www.gitxiv.com/ 文章撰写 Overleaf [Autho…

从倍压整流到二极管钳位与限幅

何为倍压整流?这里直接引用“百度百科”解释,如下述。 在一些需用高电压、小电流的地方,常常使用倍压整流电路。倍压整流,可以把较低的交流电压,用耐压较高的整流二极管和电容器,“整”出一个较高的直流电…

Java项目实战II基于Java+Spring Boot+MySQL的工程教育认证的计算机课程管理平台(源码+数据库+文档)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 随着工程教…

uniapp开发小程序【简单的实现点击下拉选择性别功能】

一、展示效果 二、代码 <template><view><view class="form_box"><view class="item"

硅谷甄选(9)SKU模块

SKU模块 8.1 SKU静态 <template><el-card><el-table border style"margin: 10px 0px"><el-table-column type"index" label"序号" width"80px"></el-table-column><el-table-columnlabel"名称…

Flutter Color 大调整,需适配迁移,颜色不再是 0-255,而是 0-1.0,支持更大色域

在之前的 3.10 里&#xff0c; Flutter 的 Impeller 在 iOS 上支持了 P3 广色域图像渲染&#xff0c;但是当时也仅仅是当具有广色域图像或渐变时&#xff0c;Impeller 才会在 iOS 上显示 P3 的广色域的颜色&#xff0c;而如果你使用的是 Color API&#xff0c;会发现使用的还是…

动态威胁场景下赋能企业安全,F5推出BIG-IP Next Web应用防火墙

许多企业正面临由混合和多云环境运营复杂性所引发的危机&#xff0c;它们普遍耗巨资于物理和虚拟设备的持续维护、修补和升级上&#xff0c;而针对不同云环境下的应用部署则需要特有的技能来管理众多繁杂的工具和服务。为助力企业应对上述挑战&#xff0c;F5公司发布了BIG-IP N…

如何用Python同时抓取多个网页:深入ThreadPoolExecutor

背景介绍 在信息化时代&#xff0c;数据的实时性和获取速度是其核心价值所在。对于体育赛事爱好者、数据分析师和投注行业而言&#xff0c;能否快速、稳定地抓取到实时比赛信息显得尤为重要。特别是在五大足球联赛中&#xff0c;能够在比赛进行时获得比分、控球率等实时数据&a…

(转载)Tools for Learning LLVM TableGen

前提 最近在学习有关llvm的东西&#xff0c;其中TableGen占了一部分&#xff0c;所以想特意学习下TableGen相关的语法。这里找到了LLVM官网的一篇介绍TableGen的博客&#xff0c;学习并使用机器翻译为中文。在文章的最后也添加了一些学习TableGen的资源。 原文地址&#xff1…

LARGE SCALE GAN TRAINING FORHIGH FIDELITY NATURAL IMAGE SYNTHESIS

ABSTRACT 尽管最近在生成图像建模方面取得了进展&#xff0c;但成功地从复杂的数据集(如ImageNet)生成高分辨率、多样化的样本仍然是一个难以实现的目标。为此&#xff0c;我们在迄今为止尝试的最大规模上训练生成对抗网络&#xff0c;并研究这种规模特有的不稳定性。我们发现…

组队学习专用——task05

目录 一、基本原理 1. 决策树的基本思想 2. 决策树划分过程中可能遇到的特殊情况 (1) 单一类别终止&#xff1a; (2) 属性用尽&#xff1a; (3) 样本空缺&#xff1a; 3. 决策树的结构 二、信息量、信息熵 1. 信息量 2. 信息熵 三、决策树 1. ID3 决策树&#xff08…

Linux RAID 技术详解:原理、配置、管理及故障处理

本文档深入探讨 Linux 软件 RAID 技术&#xff0c;涵盖 RAID 原理、各种 RAID 级别、mdadm 命令详解、配置步骤、管理方法以及高级故障处理和性能调优策略。 一、 RAID 原理与架构 RAID (Redundant Arrays of Independent Disks&#xff0c;独立磁盘冗余阵列) 技术并非单一技…

「C/C++」C/C++标准库 之 <cstring> 字符串操作库

✨博客主页何曾参静谧的博客📌文章专栏「C/C++」C/C++程序设计📚全部专栏「VS」Visual Studio「C/C++」C/C++程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasolid函数说明目…

单细胞数据分析(一):10X数据生成seurat数据对象

文章目录 介绍加载R包数据链接导入数据过滤细胞:移除双重细胞合并所有seurat数据对象输出结果系统信息介绍 在单细胞基因组学研究中,Seurat是一个流行的R包,用于单细胞基因表达数据的分析和探索。以下是如何从10X基因注释数据生成Seurat数据对象,并对该数据进行过滤的步骤…

day13:FTP服务

一&#xff0c;FTP概述 概述 FTP&#xff08;File Transfer Protocol&#xff0c;文件传输协议&#xff09;是用于在计算机之间传输文件的协议。它工作在网络的应用层&#xff0c;通过 TCP 协议进行数据传输&#xff0c;默认端口号为 21&#xff08;命令端口&#xff0c;另外…

从0开始的STM32学习之旅:使用中断完成等待型任务(理论部分)

目录 中断 NVIC 中断优先级 先说说一般我们聊到的中断优先级 STM32中的NVIC中断优先级表示 API CubeMx配置说明 很好&#xff0c;我们在之前的学习中已经完成了简单的GPIO输入输出驱动的控制&#xff0c;我们的下一步就是仔细了解一下中断这个事情。 中断 中断这个事情…