ACID讲解,ACID简介

2024-08-22 05:18
文章标签 讲解 简介 acid

本文主要是介绍ACID讲解,ACID简介,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ACID:保证数据库事务的完整性提出的理论。

A(Atomicity):原子性,一个事务要一起完成,要么一起失败,不能因为中途一些错误导致数据一部分写入成功,一部分写入失败,失败就要回滚。

C(Consistency):一致性,指的是数据状态一致性,就比如一次性操作三个数据状态为1的数据,给他们加2,一致性就代表三个数据都要等于3,如果一个等于3,二个还等于1就是违反一致性。

I(Isolation):隔离性,指的是事务之前的隔离性,比如A事务和B事务同时在运行,它们直接不能产生联系和影响,不然就是违反隔离性,隔离性产生如下四种隔离级别:

             1.读未提交:很好理解,就是A事务和B事务都在操作数据,A操作一个字段的数字不停的叠加叠加,B正好也在操作,这个时候B就能读取到A叠加且未提交的数据,要点就在于事务中的数据在事务未提交的时候也可以被读取到。

              2.读已提交:很好理解,与读未提交相反,读取的数据一定是其他的事务提交过后的数据,没提交的不会被读取到。

              3.可重复读:指的是在事务开始前我读取了数据A等于1,那在本事务的后续读取A的过程中他的值还是A,这样子就避免了脏读(读取到读未提交又发生了回滚的数据)和不可重复读(第一次和第二次读取的数据不一致)的问题,但是就会产生幻读(提交前查到数据是A,提交后查到是B)的问题,具体解决幻读的方案可以查询Mysql的解决方案作为参考。

               4.串读:安全级别最高也是效率最低的方案,就是必须让事务排队操作,A操作完B才能操作,不能采用高效率的多线程或者并发操作。

 

D(Durability):持久性,很好理解了,就是数据一旦提交就比如实现持久化了,继续后续系统发生了故障、断电断网数据都不会丢失。

 

总结:

                 1.我们以Mysql数据库的InnoDB的隔离级别可重复读来做一个扩展,InnoDB是怎么解决幻读的了,第一个是gap锁,就是写的锁,比如A写入id = 1,3,4这三条数据的时候会给这三条数据加锁,B想写入就会阻塞,第二个就是快照度和当前读的两个问题了,快照读很好理解,就是我读取的是啥我写入的时候就按我们读取的写入,当前读就是我当前读取的多少就写入多少,快照读因为MVCC(版本号)能解决幻读的问题,因为是我读取了多少我就修改了多少,但是在当前读的情况下next-key间隙锁来解决幻读问题,总结的内容可能不是太恰当,有不同想法的可以留言。

这篇关于ACID讲解,ACID简介的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1095345

相关文章

Java集合中的List超详细讲解

《Java集合中的List超详细讲解》本文详细介绍了Java集合框架中的List接口,包括其在集合中的位置、继承体系、常用操作和代码示例,以及不同实现类(如ArrayList、LinkedList和V... 目录一,List的继承体系二,List的常用操作及代码示例1,创建List实例2,增加元素3,访问元

Python使用国内镜像加速pip安装的方法讲解

《Python使用国内镜像加速pip安装的方法讲解》在Python开发中,pip是一个非常重要的工具,用于安装和管理Python的第三方库,然而,在国内使用pip安装依赖时,往往会因为网络问题而导致速... 目录一、pip 工具简介1. 什么是 pip?2. 什么是 -i 参数?二、国内镜像源的选择三、如何

Python itertools中accumulate函数用法及使用运用详细讲解

《Pythonitertools中accumulate函数用法及使用运用详细讲解》:本文主要介绍Python的itertools库中的accumulate函数,该函数可以计算累积和或通过指定函数... 目录1.1前言:1.2定义:1.3衍生用法:1.3Leetcode的实际运用:总结 1.1前言:本文将详

Redis的Zset类型及相关命令详细讲解

《Redis的Zset类型及相关命令详细讲解》:本文主要介绍Redis的Zset类型及相关命令的相关资料,有序集合Zset是一种Redis数据结构,它类似于集合Set,但每个元素都有一个关联的分数... 目录Zset简介ZADDZCARDZCOUNTZRANGEZREVRANGEZRANGEBYSCOREZ

Go中sync.Once源码的深度讲解

《Go中sync.Once源码的深度讲解》sync.Once是Go语言标准库中的一个同步原语,用于确保某个操作只执行一次,本文将从源码出发为大家详细介绍一下sync.Once的具体使用,x希望对大家有... 目录概念简单示例源码解读总结概念sync.Once是Go语言标准库中的一个同步原语,用于确保某个操

Golang的CSP模型简介(最新推荐)

《Golang的CSP模型简介(最新推荐)》Golang采用了CSP(CommunicatingSequentialProcesses,通信顺序进程)并发模型,通过goroutine和channe... 目录前言一、介绍1. 什么是 CSP 模型2. Goroutine3. Channel4. Channe

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

滚雪球学Java(87):Java事务处理:JDBC的ACID属性与实战技巧!真有两下子!

咦咦咦,各位小可爱,我是你们的好伙伴——bug菌,今天又来给大家普及Java SE啦,别躲起来啊,听我讲干货还不快点赞,赞多了我就有动力讲得更嗨啦!所以呀,养成先点赞后阅读的好习惯,别被干货淹没了哦~ 🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!! 环境说明:Windows 10

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能