MySQL事务隔离级别

MySQL事务隔离级别

事务

事务是由单独的一个或者多个SQL语句组成,是一个最小的不可再分割的单元,这一组操作里面的所有的执行,要么全部成功、要么全部不成功。如果有一个执行不成功,则全部进行回滚。
例如: 去银行转账,用户用A账户转100元到B账户,首先A账户需要扣减100元,B账户需要增加100元,这两个操作必须都要全部成功完成,如果有其中一个操作出现失败,例如A账户扣减完100,B账户增加100元时出现错误,则A账户增加的100也要回滚,否则就会导致金额不对。事务就是保证这两个操作要么都成功,要么都不成功。

事务的并发问题

脏读

MySQL事务隔离级别

事务A读取到了事务B已经修改还未提交的数据,此时如果事务B回滚,则事务A读取到的数据就是无效的,这种数据就是”脏数据”,事务A根据这个数据进行操作可能就会出现错误。

不可重复读

MySQL事务隔离级别

事务A读取某一个字段时,事务B对该字段进行了修改,事务A再次读取该字段时,读取到的值和第一次读取到的值不一致。

幻读

MySQL事务隔离级别

事务A查询表中数据,事务B新增了数据到该表中,事务A再次查询表中数据,两次查询结果不一致。
不可重复读和幻读的区别:不可重复读针对的是修改,幻读针对的是新增或删除。
不可重复读指的是两次读取过来的数据内容不一样,幻读指的是两次读取过来的数据条数不一样。

串行化

事务A和事务B同时操作数据时,如果事务A修改了数据,没有提交数据时,事务B想增加、修改、删除数据,都必须等待事务A提交,事务B才能执行。

事务的隔离级别

读取未提交(Read Uncommitted)

允许事务读取到其他事务未提交的数据。事务A可以读取到事务B修改但是未提交的数据。隔离级别最低,上面出现的并发问题都没解决。

读取已提交(Read Committed)(Oracle默认)

事务只能看到其他事务已经提交的数据。事务A只能读取事务B已经提交的数据。可以避免脏读,但是不可以避免不可重复读和幻读。

可重复读(Repeatable Read)(MySQL默认)

事务多次读取时可以保证读取到相同的值,在事务期间,禁止其他事务对该数据进行更新操作。事务A读取某商品数量100,在此期间禁止事务B更新该商品数量,事务A再次读取该商品数量还是100.可以避免脏读和不可重复读,但是无法避免幻读。

可串行化(Serializable)

保证事务读取到相同的数据,在事务期间,禁止其他事务对该表进行新增、更新、删除操作。

Original: https://www.cnblogs.com/aibianchengya/p/16696618.html
Author: 程序猿的代码
Title: MySQL事务隔离级别

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/577832/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 如何正确地使用Entity Framework Database First

    毕设依旧在不紧不慢地以每天解决一个问题的进度进行中。今天遇到的问题就是在建立数据模型时遇到的。因为项目是基于数据库构建的,所以理所应当地采用DB First来构造实体类和DbCon…

    Linux 2023年6月14日
    0105
  • 网易互联网笔试(3.27)

    网易互联网3.27日笔试,四道笔试题一道简答题,四道笔试题AK,简答题考察设计模式不会。 第一道题模拟使用单体技能和群体技能攻击怪物的场景、第二题字符串处理、第三题构造具有限制条件…

    Linux 2023年6月13日
    099
  • 操作系统发展史

    手工操作——穿孔卡片 1946年第一台计算机诞生–20世纪50年代中期,计算机工作还在采用手工操作方式。此时还没有操作系统的概念。 程序员将对应于程序和数据的已穿孔的纸…

    Linux 2023年6月14日
    099
  • 【6】2022年8月

    8月21日 OMG!!我真的是懒骨头!不到最后一刻丝毫不紧张!! 兄弟,八月底了阿!! 你为了明年的计划,要想同一时间内赚5万和成功上岸,这太不可思议了! 你压力好大的,别到最后放…

    Linux 2023年6月13日
    087
  • NTP服务器实现

    时间服务器是一种计算机网络仪器,它从参考时钟获取实际时间,再利用计算机网络把时间信息传递给用户。虽然还有一些比较少用或过时的协议仍然在使用,但现时最重要及广泛使用,作为时间信息发送…

    Linux 2023年6月7日
    082
  • MySQL常见问题以及解决方法

    MySQL常见问题以及解决方法 数据损坏或丢失 serverid不唯一 主从节点存在复制延迟 主从节点数据不一致 数据表主键冲突 数据损坏或丢失 Master:采用MHA+semi…

    Linux 2023年6月7日
    0103
  • springboot 工程出现 socket hang up

    出现socket hang up 原因为程序处理时间长,超出了默认请求超时时间,导致socket断开 可以通过设置请求超时时间降低出现的概率以下示例中设置请求超时时间为三分钟 sp…

    Linux 2023年6月8日
    0106
  • 2020年12月-第02阶段-前端基础-CSS Day05

    CSS Day05 学成在线页面制作 理解 能够说写单页面我们基本的流程能说出常见的css初始化语句能说出我们CSS属性书写顺序 应用 能利用ps切图能引入外部样式表能把psd文件…

    Linux 2023年6月8日
    0112
  • wget命令8种实用用法

    大家好,我是良许。 wget 是一个可以从网络上下载文件的免费实用程序,它的工作原理是从 Internet 上获取数据,并将其保存到本地文件中或显示在你的终端上。 这实际上也是大家…

    Linux 2023年5月27日
    072
  • 使用 Powershell 删除N天前的文件

    在 Linux 中删除N天前的文件可以使用以下命令: find /path/to -maxdepth 1 -name "filename" -mtime +1 …

    Linux 2023年6月14日
    078
  • nginx配置只允许域名访问,禁止ip访问80,443端口

    一、背景客户扫描阿里云服务器,发现渗透漏洞(.git文件泄露漏洞),可以直接使用IP访问项目底下的某个文件,针对这个问题,需要对nginx进行配置,不使用IP访问项目,而只能使用域…

    Linux 2023年6月14日
    086
  • 基于Redis实现分布式锁

    背景在很多互联网产品应用中,有些场景需要加锁处理,比如:秒杀,全局递增ID,楼层生成等等。大部分的解决方案是基于DB实现的,Redis为单进程单线程模式,采用队列模式将并发访问变成…

    Linux 2023年5月28日
    0107
  • 15、16、17思维导图

    posted @2022-04-24 10:20 20191223张俊怡 阅读(31 ) 评论() 编辑 Original: https://www.cnblogs.com/zzj…

    Linux 2023年6月8日
    0141
  • Netty源码解读(一)-前置准备

    前置条件 源码版本netty4.1 了解Java NIO、Reactor模型和Netty的基本使用。 解释一下: Java NIO:了解BIO和NIO的区别以及Java NIO基础…

    Linux 2023年6月7日
    091
  • 计算机网络基础

    计算机网络基础 计算机网络的定义和功能 计算机网络是利用通信设备和线路,将分布在地理位置不同的、功能独立的多个计算机系统连接起来,以功能完善的网络软件(网络通信协议及网络操作系统等…

    Linux 2023年6月7日
    091
  • 子网掩码、前缀长度、IP地址数的换算

    子网掩码、前缀长度、IP地址数的换算 子网掩码 子网掩码只有一个功能,就是将IP地址划分为网络地址和主机地址两部分。 如同现实生活中的通讯地址,可以看作省市部分和具体门牌号部分。相…

    Linux 2023年6月6日
    0246
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球