mysql四种事务隔离级别,2024金三银四

  • TransactionDefinition.PROPAGATION_MANDATORY:如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常。

  • TransactionDefinition.PROPAGATION_NESTED:如果当前存在事务,则创建一个事务作为当前事务的嵌套事务来运行;如果当前没有事务,则该取值等价于TransactionDefinition.PROPAGATION_REQUIRED

这里就不再细谈spring的事务传递性,感兴趣的可以自己深入研究下,看下这几种传递性的不同之处,下面就以mysql的innodb存储引擎(以下简称mysql)为例来看下数据库的事务隔离级别(不同数据库不同存储引擎都可能不一样,比如mysql的memory、myisam等非事务存储引擎就不支持事务)。

mysql的事务隔离级别有以下四种:

1.读未提交,有两个事务:事务A与事务B,事务A里面更新了一条记录并且未提交,事务B可以读取到事务A未提交的更改,一般不用,如果事务B使用了事务A未提交的更改,并在此基础上做了运算,并更改了数据库,事务A如果事务回滚,将会导致数据的不一致(存在脏读问题)。

2.读提交,这是很多数据库默认的事务隔离级别,但是不是mysql事务的默认隔离级别,这种隔离级别可以解决脏读的问题,但是无法解决可重复读以及幻读问题,两个事务:事务A与事务B,事务A更新了某条记录并提交,事务B在事务A操作该数据之前读取一次数据,然后在事务A更新该数据并提交后再读一次,读到的结果不一样(也称不可重复读)。

3.可重复读,两个事务:事务A与事务B,事务A更新了某条记录并提交,事务B在事务A操作该数据之前读取一次数据,然后在事务A更新该数据并提交后再读一次,读到的结果一样。针对这种隔离级别,网上很多资料都说存在幻读的情况,其他数据库可能如此,但是mysql的innodb存储引擎却通过多版本并发控制解决了幻读这个问题,笔者在实际测试过程中发现如果事务A插入或者删除数据,事务B仅仅执行select操作,不执行insert、update等更改数据的操作,那么就不存在幻读的问题,否则就会存在幻读问题,但是笔者认为这也不是典型的幻读操作了吧,毕竟执行了write操作

4.串行读,最高的事务隔离级别,在实际生产环境很少使用,因为这种隔离级别应对高并发方面性能远远不足!!

通用数据库的事务隔离级别如下图所示,请注意mysql在可重复读下幻读可能性的不同之处(不存在write操作的话就可以避免幻读)

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
img

最后

做任何事情都要用心,要非常关注细节。看起来不起眼的、繁琐的工作做透了会有意想不到的价值。
当然要想成为一个技术大牛也需要一定的思想格局,思想决定未来你要往哪个方向去走, 建议多看一些人生规划方面的书籍,多学习名人的思想格局,未来你的路会走的更远。

更多的技术点思维导图我已经做了一个整理,涵盖了当下互联网最流行99%的技术点,在这里我将这份导图分享出来,以及为金九银十准备的一整套面试体系,上到集合,下到分布式微服务

0P-1711001303970)]

[外链图片转存中…(img-A03S5P55-1711001303970)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

快来围观!我自制的 AI 周报小能手:自动收集整理周报,一键发送邮件

前言 上篇文章分享了《跟着我的步骤,轻松打造出 AI 智能体》,很多朋友都比较感兴趣,咨询我问 “AI 小白能学吗?” 我感觉问题不大,完全可以,只要把要做的事情屡明白了,遇到的卡点问题直接问 GPT…

oracle 19c单机版本补丁升级

文章目录 一、补丁包概述二、备份opatch三、替换高版本opatch四、打DB补丁1、关闭数据库2、关闭监听3、解压补丁4、冲突检测5、补丁空间检查6、执行补丁升级7、将更新内容加载到数据库8、最后查看数据库版本9、卸载补丁包 一、补丁包概述 补丁升级包 链接:https://…

GStreamer简单看看

主要是现在弄摄像头,要用到这东西。所以学学。 最权威主页:GStreamer: open source multimedia framework 大概看了下,好像命令也不难。 gst-launch-1.0 v4l2src device/dev/video0 ! video/x-raw,formatYUY2,width640,height480,framerat…

Java-SSM电影购票系统

Java-SSM电影购票系统 1.服务承诺: 包安装运行,如有需要欢迎联系(VX:yuanchengruanjian)。 2.项目所用框架: 前端:JSP、layui、bootstrap等。 后端:SSM,即Spring、SpringMvc、Mybatis等。 3.项目功能点: 3-1.后端功能: 1.用户管…

【漏洞复现】Arris 路由器 basic_sett 信息泄露漏洞

免责声明:文章来源互联网收集整理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该…

小车侧方位停车过程的动态模拟matlab仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 小车侧方位停车过程的动态模拟matlab仿真。仿真得到小车的停车动画,小车移动的xy轴坐标以及角度变换。 2.系统仿真结果 3.核心程序与模型 版本:MATLA…

Linux系统资源管理

Linux系统资源命令 在Linux中查看系统资源常用命令有哪些 在Linux中,系统资源是指计算机硬件、软件和网络设备等可以利用的一切物质和能量。Linux中的系统资源包括: CPU(中央处理器):用于处理计算机中的指令和数据的…

opencv各个模块介绍(2)

Features2D 模块:特征检测和描述子计算模块,包括SIFT、SURF等算法。 Features2D 模块提供了许多用于特征检测和描述子匹配的函数和类,这些函数和类可用于图像特征的提取、匹配和跟踪。 FeatureDetector:特征检测器的基类&#xf…

AI应用开发-基于python的知识图谱技术

AI应用开发相关目录 本专栏包括AI应用开发相关内容分享,包括不限于AI算法部署实施细节、AI应用后端分析服务相关概念及开发技巧、AI应用后端应用服务相关概念及开发技巧、AI应用前端实现路径及开发技巧 适用于具备一定算法及Python使用基础的人群 AI应用开发流程概…

19 反向迭代器

反向迭代器和正向迭代器相反,比如一个数组内容是1,2,3,4,5。正向迭代器就是按顺序输出,反向迭代器是5,4,3,2,1,顺序倒着。想要第一个输出5,需要反向迭代器rbegin在5的位置,判断输出完的条件,rend在头节点的位置就行,只…

【go从入门到精通】select条件控制

作者简介: 高科,先后在 IBM PlatformComputing从事网格计算,淘米网,网易从事游戏服务器开发,拥有丰富的C,go等语言开发经验,mysql,mongo,redis等数据库,设计模…

【八股】ThreadLocal原理

1. Thread.java 我们首先打开Thread.java源码,看到里面有一个ThreadLocalMap类型的变量threadLocals 2. ThreadLocal.java -> getMap(thread t) 然后ThreadLocal.java里面有一个getMap函数,传入的是线程,返回的是线程里面的ThreadLoca…

mysql无法看到3306端口监听

参考:https://blog.csdn.net/shumeigang/article/details/103902459 mysql> show global variables like ‘port’; 是0 原因是我的my.cnf有话: skip-network 或 注释掉,然后重新启动下数据库,运行netstat -an|grep 3306 就可以看到了

学习笔记Day13:Linux进阶

Linux进阶 Vim——Linux自带的文本编辑器 功能强大 命令模式 使用 vim <file>进入后的默认模式可以上下左右移动光标 方向键/hjkl快速到所在行的开头^/末尾$向下移动30行30j&#xff08;上左右同&#xff09;上下翻页Ctrlf向上&#xff0c;Ctrlb向下翻页快速回到文件第…

docker 进入容器内部命令

docker容器运行了&#xff0c;怎么进入容器内部查看内部的文件情况呢&#xff1f; 答&#xff1a;可以通过docker exec 的命令查看。 docker exec --help 可以查看命令介绍 &#xff1a; docker exec -it XXX /bin/bash XX为容器ID 进入容器内部 /bin/bash是需要添加的 不…

MT管理器 使用手册

MT管理器 论坛&#xff1a;https://bbs.binmt.cc/ 使用技巧系列教程&#xff1a;https://www.52pojie.cn/thread-1259872-1-1.html MT管理器 使用手册 &#xff1a;https://mt2.cn/guide/&#xff1a;https://www.bookstack.cn/read/mt-manual/80b8084f6be128c0.md&#xff…

vue学习日记15:普通组件的注册使用

一、概念 &#xff08;1&#xff09;局部注册 &#xff08;2&#xff09;全局注册 二、实践 1.局部注册 &#xff08;1&#xff09;代码 步骤&#xff1a;创建组件 导入 注册 使用 src文件夹下面仅仅保留这两个即可 其他两个文件夹可以删除 在src下面建立components文件夹…

刷题DAY30 | LeetCode 332-重新安排行程 51-N皇后 37-解数独

332 重新安排行程&#xff08;hard&#xff09; 给你一份航线列表 tickets &#xff0c;其中 tickets[i] [fromi, toi] 表示飞机出发和降落的机场地点。请你对该行程进行重新规划排序。 所有这些机票都属于一个从 JFK&#xff08;肯尼迪国际机场&#xff09;出发的先生&…

Qt 不同数据类型转换

一.不同类型数据转换示例&#xff1a; #include <QGuiApplication> #include <QQmlApplicationEngine> #include <QJsonDocument> #include <QJsonObject> #include <QDebug>int main(int argc, char *argv[]) {QCoreApplication::setAttribute…

【C语言】linux内核pci_enable_device函数和_PCI_NOP宏

pci_enable_device 一、注释 static int pci_enable_device_flags(struct pci_dev *dev, unsigned long flags) {struct pci_dev *bridge;int err;int i, bars 0;/** 此时电源状态可能是未知的&#xff0c;可能是由于新启动或者设备移除调用。* 因此获取当前的电源状态&…