MySQL的事务-隔离级别

news2024/9/23 17:16:29

上篇,整理了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.coloradmin.cn/o/1335361.html

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

相关文章

结构体的对齐规则

1.引入 我们在掌握了结构体的基本使⽤后。 现在我们深⼊讨论⼀个问题:计算结构体的大小。 这也是⼀个特别热门的考点: 结构体内存对齐。 2.具体分析 ⾸先我们得掌握结构体的对⻬规则: 1. 结构体的第⼀个成员对⻬到和结构体变量起始位置偏移量…

智能变电站协议系列-3、MMS协议示例(IEC61850)

文章目录 一、前言二、资料收集三、libiec61850的MMS协议的操作文件的示例运行及抓包分析1、协议理解2、代码查看及示例运行3、wireshark抓包及分析 四、最后 一、前言 接下来我们来分析一下MMS协议,该协议比较抽象,从定义上和理解上都比较抽象&#xf…

阶段七-GitEE

Git:版本控制软件 Git的优点 1.1 协同修改 多人并行不悖的修改服务器端的同一个文件。 1.2 数据备份 不仅保存目录和文件的当前状态,还能够保存每一个提交过的历史状态。 1.3 版本管理 在保存每一个版本的文件信息的时候要做到不保存重复数据&…

【Git】fatal: bad boolean config value ‘true~‘ for ‘core.longpaths‘

windwos操作系统git config设置错了参数值,解决方法。 出现原因 在拉取代码时,仓库中存在文件名过长得文件,拉取报错了“filename too long” 解决 git config --system core.longpaths true结果在复制命令时,粘贴到命令行多了一…

第19章总结

一.Java绘图类 1.Graphics类 Graphics类是所有图形上下文的抽象基类,它允许应用程序在组件以及闭屏图像上进行绘制。Graphics类封装了Java支持的基本绘图操作所需的状态信息,主要包括颜色、字体、画笔、文本、图像等。 2.Graphics2D类 Graphics2…

【MySQL】脏读、不可重复读、幻读介绍及代码解释

🍎个人博客:个人主页 🏆个人专栏: 数 据 库 ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 结语 我的其他博客 前言 数据库事务隔离级别是关系数据库管理系统中一个重要的概念,它涉及到多个事务并发执行…

Shell三剑客:awk(awk编辑编程)二

一、IF 语句 IF 条件语句语法格式 #方式一: if (condition)action #方式二:使用花括号语法格式 if (condition) {action1;action2; ... } {if(表达式){语句1;语句2;...}} IF 语句实例 #判断数字是奇数还是偶数 [rootlocalhost ~…

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

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

数据入表倒逼数据治理,国有企业如何做好数据资产管理

数据是驱动数字经济发展的核心生产要素,数据资产化是释放数据要素价值的重要方式。国有企业作为驱动数字化转型升级的排头兵,在数据资产入表的背景下,如何充分发挥海量规模数据和应用场景等优势,如何解决数据难点,管好…

ES8生产实践——Kibana对接Azure AD实现单点登录

基本概念介绍 什么是单点登录 单点登录(Single Sign-On,SSO)是一种身份验证和访问控制机制,允许用户使用一组凭据(通常是用户名和密码)仅需登录一次,即可访问多个应用程序或系统,而…

算法基础之最长公共子序列

最长公共子序列 核心思想: 线性dp 集合定义 : f[i][j]存 a[1 ~ i] 和 b[1 ~ j] 的最长公共子序列长度 状态计算: 分为取/不取a[i]/b[j] 共四种情况 其中 中间两种会包含两个都不取的情况(去掉) 但是因为取最大值 有重复也没事用f[i-1][j] 和 f[i][j-1]表…

GNN 图神经网络

GCN 邻接矩阵A:adjacency matrix用来表示节点间的连接关系。 度矩阵D:degree matrix用来表示节点的连接数 特征矩阵X:feature matrix用来表示节点的特征

openGauss学习笔记-172 openGauss 数据库运维-备份与恢复-导入数据-分析表172.1 分析表172.2 表自动分析

文章目录 openGauss学习笔记-172 openGauss 数据库运维-备份与恢复-导入数据-分析表172.1 分析表172.2 表自动分析 openGauss学习笔记-172 openGauss 数据库运维-备份与恢复-导入数据-分析表 执行计划生成器需要使用表的统计信息,以生成最有效的查询执行计划&#…

Sam Altman 晒网友新年愿望清单;AI Pin 明年 3 月开始交付丨 RTE 开发者日报 Vol.112

开发者朋友们大家好: 这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE (Real Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…

什么是非功能性测试?

📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢交流讨论:欢迎加入我们一起学习!📢资源分享:耗时200小时精选的「软件测试」资…

AI爆文写作变现:如何让自己的文章减少AI味,提升写作质量

利用AI实现自媒体写作变现,核心就是爆文写作提示词(Prompt) 对新手来说,缺少好用的爆文提示词,这无疑是大家碰到的一个难点。 如何创建属于自己的高效AI指令,无疑是大家最关心的问题。 本篇文章将一步一…

计算机网络——网络层(四)

前言: 前面我们已经对物理层和数据链路层有了一个简单的认识与了解,现在我们需要对数据链路层再往上的一个层,网络层进行一个简单的学习与认识,网络层有着极其重要的作用,让我们对网络层进行一个简单的认识与学习吧 目…

市场复盘总结 20231225

仅用于记录当天的市场情况,用于统计交易策略的适用情况,以便程序回测 短线核心:不参与任何级别的调整 昨日回顾: SELECT CODE,成交额排名,净流入排名,代码,名称,DDE大单金额,涨幅,主力净额,DDE大单净量,CONVERT(DATETIME, 最后封…

nosql--RedisTemplate定制化

nosql--RedisTemplate定制化 1、序列化2、如果使用redis中保存数据会使用默认的序列化机制,导致redis中保存的对象不可视2.1将所有的对象以JSON的形式保存2.2配置reids自定义配置2.3转化成功2.4配置文件代码 3redis客户端 1、序列化 stringRedisTemplate RedisTemp…

Cesium.js三维地图的实现(依托天地图CDN文件)

零、技术选型: Vue2、VueCli5、天地图、Cesium.js 一、通过天地图官网案例实现 需要引入天地图官方提供的CDN链接访问Cesium.js相关文件 相关文件: https://api.tianditu.gov.cn/cdn/demo/sanwei/static/cesium/Cesium.js https://api.tianditu.gov.cn/…