您当前的位置:首页 > 电脑百科 > 数据库 > 百科

数据库的 ACID 属性是什么意思?

时间:2023-12-13 12:13:42  来源:微信公众号  作者:ByteByteGo

我们说到数据库的时候,常常提到其 ACID 属性。那么 ACID 是什么意思呢?

ACID 是用来描述数据库事务的属性。反过来说,满足 ACID 属性的一系列数据库操作被称为事务。

下图解释了 ACID 在数据库事务中的含义。

数据库的 ACID 属性是什么意思?图片

01 原子性(Atomicity)

事务中的写操作是一次性执行的,不能分解成更小的部分。如果在执行事务时出现故障,同一个事务中的写入将被回滚。应用程序可以安全地重试同一事务,而不会产生任何副作用。

因此,原子性意味着 "全有或全无"(All or Nothing)。

02 一致性(Consistency)

CAP 定理中的 "一致性 "是指每次读取都会收到最近的写入或错误。与 CAP 定理不同的是,这里的一致性是指保留数据库的不变性。事务写入的任何数据都必须符合事先定义的规则,并保持数据库处于良好状态。比如我们在数据库中设置了 Trigger 用来更新关联表,那么数据写入后必须保证其正确执行。

03 隔离(Isolation)

当有来自两个不同事务的并发写入时,这两个事务是相互隔离的。最严格的隔离是 "序列化"(serializability),即每个事务运行时都像数据库中唯一运行的事务一样。然而,这在现实中很难实现,所以我们通常采用较弱的隔离级别。

04 持久化(Durability)

事务提交后,即使系统发生故障,数据也会被持久化。数据库会使用预写日志(Write-Ahead Log)或类似机制来确保持久化。在分布式系统中,持久化意味着数据会复制到其他节点。

神书 DDIA (Designing Data Intensive Applications) 中关于 ACID 有几点很好的见地,值得我们思考:

  1. 一致性其实是应用程序的责任,而不是数据库的职责范围。应用程序可以使用原子性和隔离来保证数据的一致性。而数据库系统只能保证各种数据库规则被执行了。
  2. ACID 四个属性中只有隔离是用来描述并发情况的,原子性并不描述并发情况。
  3. 各个弱隔离级别都会带来一些限制,我们需要清楚其底层机制。


Tags:ACID   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
数据库的 ACID 属性是什么意思?
我们说到数据库的时候,常常提到其 ACID 属性。那么 ACID 是什么意思呢?ACID 是用来描述数据库事务的属性。反过来说,满足 ACID 属性的一系列数据库操作被称为事务。下图解释了...【详细内容】
2023-12-13  Search: ACID  点击:(149)  评论:(0)  加入收藏
MySQL事务ACID四大特性实现原理
说起MySQL事务处理的四大特性,相信大家都可以张口就来:ACID!那 MySQL是如何实现ACID的?每种特性的原理又是如何实现的?今天,本文笔者主要探讨MYSQL InnoDB引擎下的ACID实现原理,对...【详细内容】
2023-03-21  Search: ACID  点击:(80)  评论:(0)  加入收藏
MySQL中的ACID是如何实现的?
本文主要探讨MySQL的ACID是如何实现的,对于什么是事务,隔离个别以及锁相关的只是不做过多的讨论。MySQL作为当下最受欢迎的关系型数据库,可应用于java,python,C++等诸多平台,了...【详细内容】
2022-04-12  Search: ACID  点击:(557)  评论:(0)  加入收藏
分布式系统中ACID和CAP有什么区别
事务机制ACID和CAP理论是数据管理和分布式系统中两个重要的概念,很不巧,这两个概念中都有相同的“C”代表 "Consistency" 一致性,但是实际上是完全不同的意义,下面是比较两个概...【详细内容】
2019-11-27  Search: ACID  点击:(473)  评论:(0)  加入收藏
Mysql中ACID的原理?
说到事务的四大特性原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability),懂的人很多。但是稍微涉及细节一点,这四大特性在数据库中的实现原理是怎么样的?...【详细内容】
2019-10-22  Search: ACID  点击:(559)  评论:(0)  加入收藏
一文读懂MySQL的ACID原理
引言照例,我们先来一个场景~面试官:"知道事务的四大特性么?"你:"懂,ACID嘛,原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)!"面试官:“你们是...【详细内容】
2019-07-22  Search: ACID  点击:(975)  评论:(0)  加入收藏
▌简易百科推荐
向量数据库落地实践
本文基于京东内部向量数据库vearch进行实践。Vearch 是对大规模深度学习向量进行高性能相似搜索的弹性分布式系统。详见: https://github.com/vearch/zh_docs/blob/v3.3.X/do...【详细内容】
2024-04-03  京东云开发者    Tags:向量数据库   点击:(4)  评论:(0)  加入收藏
原来 SQL 函数是可以内联的!
介绍在某些情况下,SQL 函数(即指定LANGUAGE SQL)会将其函数体内联到调用它的查询中,而不是直接调用。这可以带来显著的性能提升,因为函数体可以暴露给调用查询的规划器,从而规划器...【详细内容】
2024-04-03  红石PG  微信公众号  Tags:SQL 函数   点击:(3)  评论:(0)  加入收藏
如何正确选择NoSQL数据库
译者 | 陈峻审校 | 重楼Allied Market Research最近发布的一份报告指出,业界对于NoSQL数据库的需求正在持续上升。2022年,全球NoSQL市场的销售额已达73亿美元,预计到2032年将达...【详细内容】
2024-03-28    51CTO  Tags:NoSQL   点击:(13)  评论:(0)  加入收藏
为什么数据库连接池不采用 IO 多路复用?
这是一个非常好的问题。IO多路复用被视为是非常好的性能助力器。但是一般我们在使用DB时,还是经常性采用c3p0,tomcat connection pool等技术来与DB连接,哪怕整个程序已经变成以...【详细内容】
2024-03-27  dbaplus社群    Tags:数据库连接池   点击:(12)  评论:(0)  加入收藏
八个常见的数据可视化错误以及如何避免它们
在当今以数据驱动为主导的世界里,清晰且具有洞察力的数据可视化至关重要。然而,在创建数据可视化时很容易犯错误,这可能导致对数据的错误解读。本文将探讨一些常见的糟糕数据可...【详细内容】
2024-03-26  DeepHub IMBA  微信公众号  Tags:数据可视化   点击:(6)  评论:(0)  加入收藏
到底有没有必要分库分表,如何考量的
关于是否需要进行分库分表,可以根据以下考量因素来决定: 数据量和负载:如果数据量巨大且负载压力较大,单一库单一表可能无法满足性能需求,考虑分库分表。 数据增长:预估数据增长...【详细内容】
2024-03-20  码上遇见你  微信公众号  Tags:分库分表   点击:(13)  评论:(0)  加入收藏
在 SQL 中写了 in 和 not in,技术总监说要炒了我……
WHY?IN 和 NOT IN 是比较常用的关键字,为什么要尽量避免呢?1、效率低项目中遇到这么个情况:t1表 和 t2表 都是150w条数据,600M的样子,都不算大。但是这样一句查询 ↓select *...【详细内容】
2024-03-18  dbaplus社群    Tags:SQL   点击:(5)  评论:(0)  加入收藏
应对慢SQL的致胜法宝:7大实例剖析+优化原则
大促备战,最大的隐患项之一就是慢SQL,对于服务平稳运行带来的破坏性最大,也是日常工作中经常带来整个应用抖动的最大隐患,在日常开发中如何避免出现慢SQL,出现了慢SQL应该按照什...【详细内容】
2024-03-14  京东云开发者    Tags:慢SQL   点击:(4)  评论:(0)  加入收藏
过去一年,我看到了数据库领域的十大发展趋势
作者 | 朱洁策划 | 李冬梅过去一年,行业信心跌至冰点2022 年中,红衫的一篇《适应与忍耐》的报告,对公司经营提出了预警,让各个公司保持现金流,重整团队,想办法增加盈利。这篇报告...【详细内容】
2024-03-12    InfoQ  Tags:数据库   点击:(25)  评论:(0)  加入收藏
SQL优化的七个方法,你会哪个?
一、插入数据优化 普通插入:在平时我们执行insert语句的时候,可能都是一条一条数据插入进去的,就像下面这样。INSERT INTO `department` VALUES(1, '研发部(RD)', &#39...【详细内容】
2024-03-07  程序员恰恰  微信公众号  Tags:SQL优化   点击:(19)  评论:(0)  加入收藏
站内最新
站内热门
站内头条