事务ACID四大特性(图文详解~)

news2024/9/22 5:38:02

ACID

ACID 是数据库管理系统中保证事务正确执行的四大特性的缩写。

在这里插入图片描述

1. Atomicity(原子性)

  • 原子性指事务是不可分割的单位,要么全部执行成功,要么全部失败回滚。—All or nothing.

在这里插入图片描述

  • 通常使用日志记录机制来启动回滚功能。

在这里插入图片描述

  • 在事务执行过程中,如果发生错误,系统会撤销事务已经执行的操作,使数据回滚到事务开始前的状态,保证数据的一致性。
    在这里插入图片描述
    在这里插入图片描述

2. Consistency(一致性)

  • 一致性指事务将系统从一个一致性状态转换到另一个一致性状态。

在这里插入图片描述

  • 在事务开始前和事务结束后,数据库的完整性约束没有被破坏,数据的约束依然有效。

  • 事务执行的过程中,数据库始终保持一致性状态。

在这里插入图片描述

  • 例如,账户余额不可以是负数,一致性可以防止无效数据弄乱数据库。

在这里插入图片描述

3. Isolation(隔离性)

  • 隔离性指数据库允许多个并发事务同时对其数据进行读写,并且事务之间是相互隔离的,一个事务的执行不应影响其他事务的执行。

在这里插入图片描述

数据库系统中的隔离级别是指多个事务并发执行时,一个事务对数据的读写操作受到其他事务影响程度的程度。

隔离级别越高,事务之间的相互影响越小,但也可能会导致系统性能下降。

1. 读未提交(Read Uncommitted)

  • 定义:最低的隔离级别。一个事务可以读取另一个事务未提交的数据修改。
  • 问题:可能会导致脏读(Dirty Read),即一个事务读取到了另一个未提交事务的数据,但该事务最终可能会回滚,导致读取到的数据是无效的。

在这里插入图片描述

2. 读已提交(Read Committed)

  • 定义:一个事务只能读取到另一个事务已经提交的数据。

在这里插入图片描述

  • 解决的问题:避免了脏读,但仍可能导致不可重复读和幻读问题。

在这里插入图片描述

  • 不可重复读示例:一个事务内的两次读取操作返回的结果不一致,通常是由于其他事务修改了数据造成的

同一个事务中多次读取同样的数据时,其值保持发生了改变。即两次读取期间,其他事务对数据进行了修改,该事务在同一事务内的多次读取结果不一致。

在这里插入图片描述

  • 幻读示例:

一个事务内两次查询返回的记录数不一致,通常是由于其他事务插入了新数据或删除了数据造成的。

在这里插入图片描述

3. 可重复读(Repeatable Read)

  • 定义:确保在同一个事务中多次读取同样的数据时,其值保持不变。即使其他事务对数据进行了修改,该事务在同一事务内的多次读取结果也不会改变。

在这里插入图片描述

  • 解决的问题:避免了不可重复读,但仍可能出现幻读问题。

4. 序列化(Serializable)

在这里插入图片描述

  • 定义:最高的隔离级别,通过强制事务串行执行来避免并发问题。保证了所有并发事务的执行效果与串行执行的效果相同,从而避免了脏读、不可重复读和幻读的问题。

在这里插入图片描述

  • 解决的问题:提供最高的数据一致性和完整性,但可能会导致性能下降,因为事务必须严格按照顺序执行。

选择隔离级别的考虑因素:

  • 数据一致性要求:如果应用对数据一致性要求极高,应选择较高的隔离级别,如可重复读或串行化。

  • 并发性能需求:如果并发性能是关键,可以选择较低的隔离级别,如读已提交或读未提交,但需要考虑并发带来的数据一致性问题。


4. Durability(持久性)

  • 持久性指一旦事务提交,其所做的修改会永久保存在数据库中,并不会因系统故障导致数据的丢失。

在这里插入图片描述

  • 通常通过将事务的操作持久化到非易失性存储介质(如硬盘)来实现,保证即使系统崩溃,事务提交的数据也不会丢失。
  • 分布式节点持久化:

在这里插入图片描述
在这里插入图片描述


一言以蔽之:原子性——回滚失败事务,一致性——遵循规则,隔离性——防止干扰,持久性——数据永久保存。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1926358.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

昇思25天学习打卡营第21天|CycleGAN 图像风格迁移互换

今天是参加昇思25天学习打卡营的第21天,今天打卡的课程是“CycleGAN 图像风格迁移互换”,这里做一个简单的分享。 1.简介 从今天开始到第25天的学习内容都是生成式网络的内容。今天要学习的第一个生成式网络是CycleGAN,目标是实现图像风格迁…

苹果将在2025年春季通过iOS更新大幅提升Siri的智能|TodayAI

据彭博社(Bloomberg)最新报道,苹果公司(Apple)计划在2025年春季推出其最新的Apple Intelligence AI系统,通过iOS 18.4版本更新为广大iPhone用户带来更智能的Siri。这一消息由科技行业知名记者马克古尔曼在其…

【从0到1进阶Redis】主从复制

1、概念 主从复制,是指将一个台 Redis 服务器的数据,复制到其他的 Redis 服务器。前者称为主节点(master/leader),后者称为从节点(slave/follower);数据的复制是单向的,…

计算机网络生成树协议介绍与实践

生成树协议 1.环路 二层环路:数据链路层,交换机(二层设备)通过线路连接环状。即物理成环并且没有开启防环协议。 危害:广播风暴:交换机将未知帧广播,收到后的交换机继续广播,不断…

C语言--递归

曾经有一个段子:上大学时,我们的c语言老师说:学c时,如果有50%的同学死在了循环上面,那么就有90%的同学死在了递归上面。接下来,就来看看递归是怎么个事? 一.递归的介绍 递归是指一个函数直接或…

CV09_深度学习模块之间的缝合教学(4)--调参

深度学习就像炼丹。炉子就是模型,火候就是那些参数,材料就是数据集。 1.1 参数有哪些 调参调参,参数到底是哪些参数? 1.网络相关的参数:(1)神经网络网络层 (2)隐藏层…

偶数位的数c++

题目描述 给你两个整数 l,r,求 l∼r 范围内有多少个位数为偶数的数。 输入 一行两个整数 l,r。 输出 输出位数为偶数的数的数量。 样例输入 5 15样例输出 6 提示 样例解释 10,11,12,13,14,15 位数为偶数,都是两位数。 数据规模与约定 对于 1…

过滤器、监听器、拦截器

目录 一、 主要内容 二、 过滤器 2.1 介绍 2.2 实现 MyFilter01 MyFilter02 MyServlet01 MyServlet02 2.3 说明 2.4 执行顺序 1. 使用 web.xml 2. 使用注解和Order 3. 使用FilterRegistrationBean 2.5字符乱码 三、监听器 3.1介绍 3.2实现 3.3在线人数统计 O…

克洛托光电再度合作福晶科技,高精度光学镜头装调仪正式交付

近日,苏州东方克洛托光电技术有限公司(下称“克洛托光电”)高精度光学镜头装调仪正式交付于福建福晶科技股份有限公司,研发人员在现场完成设备安装调试并介绍使用方法。据悉,这已是双方第二次展开合作。 前沿产品力助推…

企业知识库用不起来?试一下用HelpLook同步钉钉组织架构

提升企业管理和协同效率已成为增强竞争力的关键。企业通过知识管理,搭建内部知识库,将分散的经验和知识转化为系统化流程,减少重复解释,促进业务高效运作。这为企业提供了坚实的基础。 企业知识库面临的挑战 尽管传统知识库内容丰…

银河麒麟高级服务器操作系统V10加固操作指南

1:检查系统openssh安全配置: 2:检查是否设置口令过期前警告天数: 3:检查账户认证失败次数限制: 修改/etc/pam.d/system-auth文件中deny的参数即可 4:检查是否配置SSH方式账户认证失败次数限制:

github相关命令

如果我们要从 GitHub 上拉取一个项目到本地,进行修改并上传回去,通常需要以下步骤: 1. 克隆远程仓库到本地 使用 git clone 命令将 GitHub 上的项目克隆到本地: (网址示例如下所示) git clone https://github.com/你的…

多旋翼无人机挂载多功能抛投器技术详解

多旋翼无人机,作为一种具有高效、灵活、稳定等特性的无人驾驶飞行器,在现代社会的多个领域得到了广泛应用。其中,挂载多功能抛投器技术,使得无人机在物资投送、救援等任务中发挥出更加重要的作用。以下将详细介绍多旋翼无人机挂载…

正则表达式怎么控制匹配的字符串更近的一个

http((?!http).)*m3u8 正则表达式怎么控制匹配的字符串更近的一个 正则如何匹配最近的字符 正则如何匹配最近的两个字符 怎么控制只要离字符串b匹配更近一点的字符串a 解释 a.b,它将会匹配最长的以a开始,以b结束的字符串 a.?b匹配最短的&#xff…

测试开发面经总结(三)

TCP三次握手 TCP 是面向连接的协议,所以使用 TCP 前必须先建立连接,而建立连接是通过三次握手来进行的。 一开始,客户端和服务端都处于 CLOSE 状态。先是服务端主动监听某个端口,处于 LISTEN 状态 客户端会随机初始化序号&…

微信小程序密码 显示隐藏 真机兼容问题

之前使用type来控制&#xff0c;发现不行&#xff0c;修改为password属性即可 <van-fieldright-icon"{{passwordType password? closed-eye:eye-o}}"model:value"{{ password }}"password"{{passwordType password ? true: false}}"borde…

数仓工具—Hive语法之排除特定列

排除特定列 Apache Hive是一个基于Hadoop HDFS的数据仓库框架,用于存储和分析大量数据。Apache Hive支持大多数关系数据库功能,如对大型表进行分区和根据分区列存储值。 在本文中,我们将检查从SELECT查询中排除Hive分区列的方法。 这个在我们需要表中大量列的时候,例如一…

【python】OpenCV—European Article Number

参考学习来自&#xff1a;OpenCV基础&#xff08;25&#xff09;条码和二维码扫的生成与识别 1 条形码介绍 EAN-13是欧洲物品编码&#xff08;European Article Number&#xff09;的缩写&#xff0c;是一种广泛使用的条形码标准&#xff0c;特别是在超级市场和其它零售业中。…

第二周周日学习总结

题目总结 1. 给你一个仅由数字组成的字符串 s&#xff0c;在最多交换一次 相邻 且具有相同 奇偶性 的数字后&#xff0c;返回可以得到的 字典序最小的字符串 。 如果两个数字都是奇数或都是偶数&#xff0c;则它们具有相同的奇偶性。例如&#xff0c;5 和 9、2 和 4 奇偶性…

zookeeper基础知识学习

官网&#xff1a;Apache ZooKeeper 下载地址&#xff1a;Index of /dist/zookeeper/zookeeper-3.5.7Index of /dist/zookeeperIndex of /dist/zookeeper/zookeeper-3.5.7 ZK配置参数说明&#xff1a; 1、tickTime2000&#xff1a;通讯心跳时间&#xff0c;zookeeper服务器与客…