MySQL的事务-隔离级别

上篇,整理了MySQL事务的原子性,这篇继续整理MySQL事务的一致性、隔离性和持久性。

2. 一致性指的是事务开始前和结束后,数据库的完整性约束没有被破坏,这保证了数据的完整性和一致性。一致性必须确保数据库从一个一致的状态转换到另一个一致的状态。

3. 隔离性指的是在同一时间,只允许一个事务请求同一数据,不同的事务之间彼此没有任何干扰。这保证了并发事务间的互斥性,使得数据在处理过程中不会被其他事务干扰。MySQL支持不同的事务隔离级别:Read Uncommitted, Read Committed, Repeatable Read, Serializable, 这些隔离级别定义了事务如何与其他并发事务交互。较低的隔离级别可以提供更高的并发性能,但可能导致数据不一致问题,如脏读、不可重复读和幻读。而较高的隔离级别可以确保数据的一致性,但可能会限制并发事务的数量。 MySQL的默认隔离级别是 Repeatable Read,这意味着在一个事务内多次读取同一个数据,数据内容时一致的,即使其他事务修改了该数据,也不会影响当前事务的读取结果。

查看mysql的事务隔离级别:

SHOW VARIABLES LIKE 'transaction_isolation';

隔离性体现如下:

(1)如果数据库的事务隔离级别是Read Uncommitted:

由于mysql的默认事务隔离级别是Repeatable Read,先将mysql的默认事务隔离级别改为Read Uncommited

SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

上面的sql只是修改了当前会话的隔离级别,不影响其他会话,修改MySQL的全局默认事务隔离级别如下

SET GLOBAL TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

修改之后,数据库的默认隔离级别变为READ-UNCOMMITTED

打开两个事务,其中一个事务A读取,一个事务B进行修改数据但不提交,

事务B进行修改数据,但不提交

事务A读取到了事务B未提交的数据,这就产生了脏读。

(2)如果数据库的事务隔离级别是Read committed:

修改数据库的默认隔离级别为读已提交Read committed

set global transaction isolation level read committed;

开启事务A和事务B

在事务B中将zhangsan的money修改为3000,不提交事务,在事务B中可以查询到zhangsan的money变成了3000; 但是在事务A中不会查询到未提交的数据,这就可以避免脏读。

但是读已提交会造成不可重复读,如下

(3)如果数据库的事务隔离级别是Repeated read:

修改默认隔离级别

set global transaction isolation level repeatable read;

MySQL的可重复读如何解决幻读,以及快照读、当前读等问题,下一篇继续整理。

4. 持久性指的是事务完成后,事务对数据库的所有更新将被保存到数据库,不能回滚。

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

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

相关文章

C++ 比 C语言的新增的特性 1

1. C是C的增强 1.1 C是静态类型的语言,具有严格的数据类型检查 1.1.1 c 因为const修饰的变量不允许修改,但是只给了警告,不严谨 const int a10;a20; //报错int *p&a;*p20;//a的值? test1.c:6:9: warning: initialization dis…

详解Java反射机制reflect(一学就会,通俗易懂)

1.定义 #2. 获取Class对象的三种方式 sout(c1)结果为class com.itheima.d2_reflect.TestClass 获取到了Class对象就相当于获取到了该类 2.获取类的构造器 3.获取全部构造器对象 2.根据参数类型获取构造器对象 类型后必须加.class 3.构造器对象调用构造器方法 4.暴力访问 4.获…

【笔记】入门PCB设计(全30集带目录) 杜洋工作室 AD09 Altium Designer

入门PCB设计(全30集带目录) 杜洋工作室 AD09 p1 创建p2 原理图上增加元件1)加元件2)放导线3)自定义元件1. 自定义排针2.有引脚的元件 p3 完整原理图 p1 创建 step1.创建(PCB)工程,后缀.PrjPCB。…

【FPGA 器件比较】Altera -- Xilinx

比较以下市场前二名的产品线及定位 应用场景XilinxAltera高性能VersalAgilex F/I性能Virtex / Kintex / Artix / Zynq UltraScaleAgilex F/I / Stratix 10中档Virtex / Kintex / Zynq ~ 7 / UltraScaleStratix 10 / Arria 10低成本Artix-7 Sparton-7Cyclone 10 如上表&#x…

Linux构建NFS远程共享存储和ftp配置

NFS架构 NFS介绍 文件系统级别共享(是NAS存储) --------- 已经做好了格式化,可以直接用。 速度慢比如:nfs,samba NFS:Network File System 网络文件系统,NFS 和其他文件系统一样,是在 Linux …

《Git快速入门》Git分支

1.master、origin、origin/master 区别 首先搞懂git分支的一些名称区别: master : Git 的默认分支名字。它并不是一个特殊分支、跟其它分支完全没有区别。 之所以几乎每一个仓库都有 master 分支,是因为 git init 命令默认创建它&#xff0c…

Redis缓存穿透、缓存击穿、缓存雪崩介绍

一、Redis的缓存穿透 1.什么是缓存穿透? 缓存穿透是指:客户端请求的数据在缓存中和数据库中都不存在,这时缓存就永远不会生效,这些请求都打到数据库从而导致数据库压力过大。 2.出现缓存穿透的解决方案,以下是常用的两…

reactor的原理与实现

网络模型 前情回顾服务器模型 Reactor和 ProactorReactor模型Proactor模型同步I/O模拟Poractor模型Libevent,libev,libuv优先级事件循环线程安全 前情回顾 网络IO,会涉及到两个系统对象:   一个是用户空间调用的进程或线程   …

07 Vue3框架简介

文章目录 一、Vue3简介1. 简介2. 相关网站3. 前端技术对比4. JS前端框架5. Vue核心内容6. 使用方式 二、基础概念1. 创建一个应用2. 变量双向绑定(v-model)3. 条件控制(v-if)4. 数组遍历(v-for)5. 绑定事件…

leetcode 38. 外观数列(medium)(优质解法)

链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 代码: class Solution {public String countAndSay(int n) {//要进行 n - 1 次描述才能得到结果// last 代表当前要描述的字符串String last"1";// ret 代表描述…

应用安全技术措施

目录 身份鉴别 访问控制 安全审计 剩余信息保护 通信完整性 通信保密性 抗抵赖 软件容错 身份鉴别 进阶 访问控制 进阶 安全审计 进阶 剩余信息保护 进阶 通信完整性 通信保密性 抗抵赖 软件容错 ~over~

TypeScript学习(进阶篇)

一、元组 数组合并了相同类型的对象,而元组(Tuple)合并了不同类型的对象。 元组起源于函数编程语言(如 F#),这些语言中会频繁使用元组。 简单的例子 定义一对值分别为 string 和 number 的元组&#xf…

MES系统是什么?MES系统的功能有哪些?

在现代制造业的快速发展中,所有规模的企业都面临着类似的挑战:如何提高生产效率、确保产品质量、减少浪费、降低成本,同时迅速响应市场变化。而在这个过程中,传统企业管理往往有以下几个典型痛点: 纸质文件堆叠如山&a…

麦肯锡产品经理问题解决流程终极指南

您是否想知道世界上最成功的产品经理如何始终如一地提供不仅满足而且超出预期的解决方案?秘密可能就在于世界上最负盛名的咨询公司之一麦肯锡公司所磨练的方法论。本文深入探讨了麦肯锡的问题解决流程,该流程专为希望提升水平的产品经理量身定制。 01. 麦…

Kafka生产环境问题总结与性能优化实践

Kafka可视化管理工具kafka-manager 安装及基本使用可参考: httos://wwwcnbloas.com/dadonaaa/o/8205302.html 线上环境规划 1. 消息丢失情况: 消

实战教学:零食百货商城小程序开发全程指导

随着移动设备的普及和互联网技术的发展,小程序成为越来越多人的选择,特别是在购物方面。开发一个零食百货商城小程序,可以让你在手机上随时随地购买各种零食,方便快捷。本文将为你提供全程指导,让你轻松开发一个成功的…

MySql的mvcc原理

目录 一、什么是mvcc? 二、什么是当前读,快照读? 当前读 快照读 三、mvcc实现原理 版本链 undo日志 Undo log 的用途 Read View(读视图) Read View几个属性 五、RR、RC级别下生成时机 一、什么是mvcc? mvcc全称Multi-Version Concurrency Control,即…

迪文屏开发保姆级教程5—表盘时钟和文本RTC显示

这篇文章要讲啥事呢? 本篇文章主要介绍了在DGBUS平台上使用表盘时钟和文本时钟RTC显示功能的方法。 文哥悄悄话: 官方开发指南PDF:(不方便下载的私聊我发给你) https://download.csdn.net/download/qq_21370051/8864…

Flowable-升级为7.0.0.M2-第一节

目录 升级jdk升级springboot到3.1.3升级数据库连接池druid-spring-boot-3-starter到1.2.20升级mybatis-plus到3.5.3.2升级flowable到7.0.0.M2 最近有些读者一直问flowable如何升级到7.0.0.M2,接下来我就一步步的把flowable升级到7.0.0.M2 升级jdk flowable7.x采用的…

算法导论复习(四)主方法的专题

主方法我们要记住的是什么呢?