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

相关文章

Spring Security简介、使用与最佳实践

《SpringSecurity简介、使用与最佳实践》SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,本文给大家介绍SpringSec... 目录一、如何理解 Spring Security?—— 核心思想二、如何在 Java 项目中使用?——

Java Stream 并行流简介、使用与注意事项小结

《JavaStream并行流简介、使用与注意事项小结》Java8并行流基于StreamAPI,利用多核CPU提升计算密集型任务效率,但需注意线程安全、顺序不确定及线程池管理,可通过自定义线程池与C... 目录1. 并行流简介​特点:​2. 并行流的简单使用​示例:并行流的基本使用​3. 配合自定义线程池​示

PostgreSQL简介及实战应用

《PostgreSQL简介及实战应用》PostgreSQL是一种功能强大的开源关系型数据库管理系统,以其稳定性、高性能、扩展性和复杂查询能力在众多项目中得到广泛应用,本文将从基础概念讲起,逐步深入到高... 目录前言1. PostgreSQL基础1.1 PostgreSQL简介1.2 基础语法1.3 数据库

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Python库 Django 的简介、安装、用法入门教程

《Python库Django的简介、安装、用法入门教程》Django是Python最流行的Web框架之一,它帮助开发者快速、高效地构建功能强大的Web应用程序,接下来我们将从简介、安装到用法详解,... 目录一、Django 简介 二、Django 的安装教程 1. 创建虚拟环境2. 安装Django三、创

MySQL连表查询之笛卡尔积查询的详细过程讲解

《MySQL连表查询之笛卡尔积查询的详细过程讲解》在使用MySQL或任何关系型数据库进行多表查询时,如果连接条件设置不当,就可能发生所谓的笛卡尔积现象,:本文主要介绍MySQL连表查询之笛卡尔积查... 目录一、笛卡尔积的数学本质二、mysql中的实现机制1. 显式语法2. 隐式语法3. 执行原理(以Nes

MySQL 索引简介及常见的索引类型有哪些

《MySQL索引简介及常见的索引类型有哪些》MySQL索引是加速数据检索的特殊结构,用于存储列值与位置信息,常见的索引类型包括:主键索引、唯一索引、普通索引、复合索引、全文索引和空间索引等,本文介绍... 目录什么是 mysql 的索引?常见的索引类型有哪些?总结性回答详细解释1. MySQL 索引的概念2

RabbitMQ消费端单线程与多线程案例讲解

《RabbitMQ消费端单线程与多线程案例讲解》文章解析RabbitMQ消费端单线程与多线程处理机制,说明concurrency控制消费者数量,max-concurrency控制最大线程数,prefe... 目录 一、基础概念详细解释:举个例子:✅ 单消费者 + 单线程消费❌ 单消费者 + 多线程消费❌ 多

从入门到进阶讲解Python自动化Playwright实战指南

《从入门到进阶讲解Python自动化Playwright实战指南》Playwright是针对Python语言的纯自动化工具,它可以通过单个API自动执行Chromium,Firefox和WebKit... 目录Playwright 简介核心优势安装步骤观点与案例结合Playwright 核心功能从零开始学习

Qt QCustomPlot库简介(最新推荐)

《QtQCustomPlot库简介(最新推荐)》QCustomPlot是一款基于Qt的高性能C++绘图库,专为二维数据可视化设计,它具有轻量级、实时处理百万级数据和多图层支持等特点,适用于科学计算、... 目录核心特性概览核心组件解析1.绘图核心 (QCustomPlot类)2.数据容器 (QCPDataC