Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >关系型数据库的ACID(原子性、一致性、隔离性与持久性)

关系型数据库的ACID(原子性、一致性、隔离性与持久性)

作者头像
Autooooooo
发布于 2020-11-09 01:58:11
发布于 2020-11-09 01:58:11
4.5K0
举报
文章被收录于专栏:CoxhuangCoxhuang

ACID特性

数据库管理系统中事务(transaction)的四个特性(分析时根据首字母缩写依次解释):原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。(执行单个逻辑功能的一组指令或操作称为事务)

#1 原子性

原子性是指事务是一个不可再分割的工作单元,事务中的操作要么都发生,要么都不发生。可采用“A向B转账”这个例子来说明解释在DBMS中,默认情况下一条SQL就是一个单独事务,事务是自动提交的。只有显式的使用start transaction开启一个事务,才能将一个代码块放在事务中执行。

#2 一致性

一致性是指在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。这是说数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。 如A给B转账,不论转账的事务操作是否成功,其两者的存款总额不变(这是业务逻辑的一致性,至于数据库关系约束的完整性就更好理解了)。保障机制(也从两方面着手):数据库层面会在一个事务执行之前和之后,数据会符合你设置的约束(唯一约束,外键约束,check约束等)和触发器设置;此外,数据库的内部数据结构(如 B 树索引或双向链表)都必须是正确的。业务的一致性一般由开发人员进行保证,亦可转移至数据库层面。

#3 隔离性

多个事务并发访问时,事务之间是隔离的,一个事务不应该影响其它事务运行效果。 在并发环境中,当不同的事务同时操纵相同的数据时,每个事务都有各自的完整数据空间。由并发事务所做的修改必须与任何其他并发事务所做的修改隔离。事务查看数据更新时,数据所处的状态要么是另一事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看到中间状态的数据。事务最复杂问题都是由事务隔离性引起的。完全的隔离性是不现实的,完全的隔离性要求数据库同一时间只执行一条事务,这样会严重影响性能。关于隔离性中的事务隔离等级

#4 持久性

这是最好理解的一个特性:持久性,意味着在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。(完成的事务是系统永久的部分,对系统的影响是永久性的,该修改即使出现致命的系统故障也将一直保持)write ahead logging:SQL Server中使用了WAL(Write-Ahead Logging)技术来保证事务日志的ACID特性,在数据写入到数据库之前,先写入到日志,再将日志记录变更到存储器中。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/05/07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
事务、事务特性、不考虑隔离性会产生的三个问题、事务隔离级别
事务是数据库操作的最小工作单元,指作为单个逻辑工作单元的一系列操作,这些操作作为一个整体一起向系统提交,要么都执行,要么都不执行,事务是一组不可再分割的操作集合。 事务就是并发控制的单位,是用户定义的一个操作序列。
暴躁的程序猿
2022/03/24
2820
技术篇:数据库的事务隔离级别
事务前后数据的完整性必须保持一致。比如A向B转账,A扣100元,B收到100元,符合逻辑运算。
伊泽瑞尔
2022/06/01
2100
深入理解 MySQL 事务:隔离级别、ACID 特性及其实现原理
事务(Transaction),一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元。事务通常由高级数据库操作语言或编程语言(如 SQL,C++ 或 Java)书写的用户程序的执行所引起,并用形如begin transaction和end transaction语句(或函数调用)来界定。事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全部操作组成。
CG国斌
2022/05/06
5400
深入理解 MySQL 事务:隔离级别、ACID 特性及其实现原理
MySQL的ACID原理!
OK,回到正题。说到事务的四大特性原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability),懂的人很多。但是稍微涉及细节一点,这四大特性在数据库中的实现原理是怎么样的?那就没有几个人能够答得上来了。因此,我们这篇文章着重讨论一下四大特性在Mysql中的实现原理。
Java3y
2019/05/17
1.7K0
MySQL的ACID原理!
深入浅出:MySQL中事务的ACID四大特性
在MySQL中,ACID特性(原子性、一致性、隔离性、持久性)是确保数据准确性和可靠性的四大支柱。这些原则共同构成了事务管理的基石,保障了我们的数据不仅仅是存储的,更是安全、准确、可靠的。本文将带你深入浅出地探索MySQL中的ACID原则,揭示它们如何共同作用,确保数据库的健康运行。
windealli
2024/03/11
4.1K0
深入浅出:MySQL中事务的ACID四大特性
MySQL事务处理:如何确保数据一致性与可靠性
事务(Transaction)是数据库管理系统(DBMS)中的一个核心概念。MySQL 事务是指一组数据库操作,作为一个整体进行处理,确保要么全部成功,要么全部失败。
用户7954602
2024/12/21
2750
MySQL事务处理:如何确保数据一致性与可靠性
【DB笔试面试441】事务的持久性是指?()
事务有4个特性,一般都称之为ACID特性,简单记为原一隔持(谐音:愿意各吃,即愿意各吃各的),如下表所示:
AiDBA宝典
2019/09/30
1.4K0
SQL Server数据库高级进阶之事务实战演练
一、SQL Server事务的本质 •  什么是SQL Server数据库事务? 事务:是作为单个工作单元而执行的--系列操作,如查询和修改数据,甚至可能是修改数据定义。 事务:保持逻辑数据一致性与可恢复性,必不可少的利器。 •  SQL Server数据库事务举例 在一个事务中,你写了2条sql语句,一条是修改订单表状态,一条是修改库存表库存-1 。 如果在修改订单表状态的时候出错,事务能够回滚,数据将恢复到没修改之前的数据状态,下面的修改库存也就不执行,这样确保你关系逻辑的一致,安全。 • 阿笨对
跟着阿笨一起玩NET
2020/07/09
6300
SQL Server数据库高级进阶之事务实战演练
数据库ACID四大特性到底为了啥,一文带你看通透
  简单说,事务就是一组原子性的SQL执行单元。如果数据库引擎能够成功地对数据库应 用该组査询的全部语句,那么就执行该组SQL。如果其中有任何一条语句因为崩溃或其 他原因无法执行,那么所有的语句都不会执行。要么全部执行成功(commit),要么全部执行失败(rollback)。
陈哈哈
2021/10/13
10.9K0
关系型数据库一些概念性的知识点总结
在当今数据驱动的世界中,信息为王。从客户资料到金融交易,每个组织都依赖数据来做出明智的决策并在竞争中保持领先地位。但随着数据量以前所未有的速度增长,管理和分析所有这些信息很快就会变得不堪重负。这就是关系数据库的用武之地。
用户4235284
2023/10/14
4510
关系型数据库一些概念性的知识点总结
MySQL事务简介
在学习 MySQL 的过程中,事务永远是一项绕不开的话题,日常程序开发也经常会用到事务。本篇文章将以 MySQL 8.0 版本为基础,一起来深入了解下 MySQL 事务。
MySQL技术
2020/11/06
8160
【黄啊码】MySQL入门—10、事务隔离级别一定要记住,不然程序员揪光头发都找不到bug在哪里
大家好!我是黄啊码,鉴于事务隔离级别大家用得比较多,所以就简单介绍一下,内容来源整理,大家轻喷!
黄啊码
2022/10/26
2640
【黄啊码】MySQL入门—10、事务隔离级别一定要记住,不然程序员揪光头发都找不到bug在哪里
数据库事务的ACID及隔离级别
数据库事务的ACID及隔离级别 Mysql中的存储引擎 在mysql5.5后MySQL5.5以后默认使用InnoDB存储引擎,除InnoDB和BDB提供事务安全表,其它存储引擎都是非事务安全表。 Mysql中的部分存储引擎特性 本次主要介绍数据库事务的ACID及隔离级别 一.事务(Transaction) (1)ACID 事务是一组SQL语句组成的逻辑处理单元,事物具有以下4个属性,通常称为事物的ACID属性 原子性(Atomicity):事务是一个原子操作单元,其对数据的修改,要么一次全都执行成功,要么全
企鹅号小编
2018/02/01
7260
数据库事务的ACID及隔离级别
数据库四大特性及数据库隔离级别
原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚。失败回滚的操作事务,将不能对事物有任何影响。
全栈程序员站长
2022/09/01
2.1K0
数据库四大特性及数据库隔离级别
深入理解MySQL事务特性:保证数据完整性与一致性
在数据库管理系统中,事务是一个不可或缺的概念,特别是在处理高并发、要求数据一致性和完整性的应用中。MySQL作为最流行的关系型数据库之一,其事务特性扮演着至关重要的角色。本文将深入探讨MySQL事务的基本概念、ACID属性以及事务隔离级别,帮助读者更好地理解和应用MySQL中的事务。
人不走空
2024/02/23
7960
MySQL数据库:事务和ACID实现原理
数据库的事务是并发控制的基本单位,是指逻辑上的一组操作,要么全部执行,要么全部不执行。
全栈程序员站长
2021/04/13
9910
MySQL数据库:事务和ACID实现原理
腾讯二面:Redis 事务支持 ACID 么?
鬼吹灯之《云南虫谷》中的摸金校尉有句话叫「合则生,分则死」,为了寻找雮尘珠他们三人分工明确、齐心协力共进退方可成功。
用户1263954
2021/10/25
2K0
【MySQL】:数据库事务管理
事务 是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。
屿小夏
2024/04/22
3860
【MySQL】:数据库事务管理
一文读懂什么是数据库事务
事务(Transaction)指一个操作,由多个步骤组成,要么全部成功,要么全部失败。
恋喵大鲤鱼
2021/04/22
2.5K0
每个Java工程师,都应该掌握数据库事务!
转账是生活中常见的操作,比如从A账户转账100元到B账号。站在用户角度而言,这是一个逻辑上的单一操作,然而在数据库系统中,至少会分成两个步骤来完成:
本人秃顶程序员
2019/05/02
5110
每个Java工程师,都应该掌握数据库事务!
推荐阅读
相关推荐
事务、事务特性、不考虑隔离性会产生的三个问题、事务隔离级别
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档