事务、事务隔离级别、三读问题

一、事务 二、事务隔离级别 三、三读问题

一、事务

事务定义:一组数据操作要么全成功,要么全失败。
事务四大特性:ACID
原子性:要么全成功,要么全失败。
一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态
隔离性:事务的执行互不影响
持久性:提交完毕的事务不可回滚

二、事务隔离级别

未提交读:可读到其他事务未提交的数据 (可能出现:脏读、不可重复读、幻读)
提交读:只能读到其他事务已提交的数据 (可能出现:不可重复读、幻读)
可重复读(MySQL默认):同一事务中的两次查询一致,不会读到其他事务对已有数据的修改。 (可能出现:幻读, InnoDB引擎通过多版本并发控制(MVCC)机制解决了幻读问题)
串行读:将事务的执行变为顺序执行,后一个事务必须等待前一个事务执行结束。

三、三读问题

以下几个概念是事务隔离级别要实际解决的问题:
脏读:读到了由于事务回滚或其他操作导致没有最终存在的数据。
不可重复读:针对更新数据。同一事务中的两次查询数据不一致。事务A的两次查询过程中插入了事务B提交的更新了原有的数据,导致事务A的两次查询不一致。
幻读:针对插入数据。事务A对某些数据作了更改还未提交时,事务B提交了插入事务A更改前相同的数据,而这时事务A的查询会误以为刚刚的更改未生效。

Original: https://www.cnblogs.com/pingcode/p/16353947.html
Author: ping_code
Title: 事务、事务隔离级别、三读问题

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

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

(0)

大家都在看

  • 环形链表_141_142

    给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 如果链表中存在环 ,则返回 true 。 …

    Java 2023年6月5日
    072
  • 超级常用的正则表达式

    一、校验数字的&#…

    Java 2023年6月9日
    077
  • Java通过socket和DTU,RTU连接工业传感器通信

    现在做DTU传感器监测数据一块,给大家分享如何通过socket技术连接到DTU,并能和DTU下面的传感器通信的,分享一下自己的心得和体会。 总体架构图 先来看下整体网络结构图。 工…

    Java 2023年6月8日
    053
  • 使用 Azure 静态 Web 应用服务免费部署 Hexo 博客

    一.前言 最近在折腾 Hexo 博客,试了一下 Azure 的静态 Web 应用服务,发现特别适合静态文档类型的网站,而且具有 免费额度,支持绑定域名。本文只是以 Hexo 作为示…

    Java 2023年6月8日
    0122
  • Fizz网关入门教程-权限校验

    概述 通过网关暴露的接口,必须配置路由。 权限校验是对请求接口的客户端的认证,确认其能否访问接口。 客户端可通过 fizz-appid 请求头表明身份,即表明自身是什么应用。 管理…

    Java 2023年6月9日
    074
  • LeetCode.1217-交换芯片(Play with Chips)

    这是小川的第421次更新,第454篇原创 今天介绍的是 LeetCode算法题中 Easy级别的第 270题(顺位题号是 1217)。There are some chips, a…

    Java 2023年6月5日
    070
  • npm 和 maven 使用 Nexus3 私服 | 前后端一起学

    前文《Docker 搭建 Nexus3 私服 》介绍了在 docker 环境下安装 nexus3 以及 nexus3 的基本操作和管理,本文分别介绍 npm(前端)和 maven(…

    Java 2023年6月16日
    054
  • 使用Jasypt对SpringBoot配置文件加密(转)

    <span class="hljs-tag"><<span class="hljs-name">depende…

    Java 2023年5月30日
    062
  • java动态代理实现与原理详细分析

    关于Java中的动态代理,我们首先需要了解的是一种常用的设计模式–代理模式,而对于代理,根据创建代理类的时间点,又可以分为静态代理和动态代理。 一、代理模式 代理模式是…

    Java 2023年5月29日
    075
  • java_day03

    变量是什么:就是可以变化的量 Java是一种强类型语言,每个变量都必须声明其类型 Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域 type varName…

    Java 2023年6月5日
    0101
  • Java调用exe

    先用C#开发一个程序,然后用Java开发一个程序去调用它,执行完之后,或者执行过程中,返回消息给Java程序,输出执行信息。 参考1:https://www.jianshu.com…

    Java 2023年5月29日
    069
  • MySQL 触发器

    触发器是 MySQL 的数据库对象之一,不需要程序调用或手工启动,而是由事件来触发、激活,从而实现执行,包括 INSERT 语句、UPDATE 语句和 DELETE 语句 创建触发…

    Java 2023年6月8日
    099
  • 【碎】@Value 注解

    注意lombok和spring posted @2022-09-16 14:12 HypoPine 阅读(6 ) 评论() 编辑 Original: https://www.cnb…

    Java 2023年6月15日
    069
  • Vue 和 Zebra 打印机连接直接打印条码

    首先,Vue是无法调用Windows系统功能的,那么打印只能通过浏览器的打印功能来实现,这样显然不行,效率太低,而且斑马打印机是通过ZPL指令进行打印的,用浏览器打印非常不方便。 …

    Java 2023年6月9日
    072
  • Spring Cloud Stream 简介

    一、概述 Spring Cloud Stream 是一个建立在 Spring Boot 和 Spring Integration 之上的框架,有助于创建事件驱动或消息驱动的微服务。…

    Java 2023年5月30日
    066
  • Nginx下css的链接问题

    放在 Nginx 下的网页代码,在链接外部 css 文件时,可能出现没有链接成功的问题。需要在 nginx.conf 里的 http 下添加一行。 http { <span …

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