MySQL 默认的事务隔离级别是什么?为什么选择这个级别?
MySQL 默认的事务隔离级别是什么?为什么选择这个级别?
在 MySQL 中,默认的事务隔离级别是 可重复读(Repeatable Read)。这是 InnoDB 存储引擎的默认事务隔离级别。
为什么选择 "可重复读" 作为默认隔离级别?
1. 解决不可重复读问题
- 不可重复读 是指在同一事务内,连续两次读取同一数据时,数据的值可能发生变化,因为其他事务修改了该数据并提交。
- 可重复读 隔离级别保证了在一个事务内,无论多少次读取数据,结果都是一致的,避免了 不可重复读 问题。这样,应用程序在执行多次读取操作时,确保每次读取的数据都是一致的,从而减少了数据不一致的风险。
2. 较高的并发性能
- 相比于 串行化 隔离级别,可重复读 提供了较好的并发性能。虽然 可重复读 允许事务间的并发执行,但它通过保证数据读取的一致性,避免了多个事务对同一数据的修改冲突,同时避免了大范围的锁竞争和资源浪费。
- 它是一个 折中方案,在 性能 和 一致性 之间做了平衡。
3. 减少幻读问题的影响
- 幻读 是指在同一事务中,第一次查询时没有返回某些数据,第二次查询时却因为其他事务插入了数据,导致查询结果发生变化。
- 可重复读 隔离级别无法完全解决幻读问题,但在 InnoDB 存储引擎中,通过使用 下一键锁(Next-Key Lock),可以有效减少幻读的发生,从而为大多数应用场景提供足够的数据一致性和隔离性。
4. 适用于大多数应用场景
- 可重复读 在大多数应用中提供了足够的隔离性,尤其是那些需要 读操作的一致性 但对性能要求也较高的系统。
- 它能够有效处理事务中的读取操作,减少由于并发导致的数据错误,同时不需要像 串行化 那样牺牲过多的性能。
总结
- MySQL 默认的事务隔离级别是 可重复读(Repeatable Read)。
- 选择这个级别是因为它在 一致性 和 并发性 之间提供了合理的折衷,能够解决 不可重复读 和 幻读 等常见问题,并且在大多数应用场景下提供了较高的性能。
- 可重复读 隔离级别是 InnoDB 引擎的默认选择,它通过 下一键锁 减少了幻读问题的影响,因此在多数情况下都能满足大部分数据库应用的需求。
MySQL 默认的事务隔离级别是什么?为什么选择这个级别?的更多相关文章
- MySQL 四种事务隔离级的说明
很早之前写的文章,重新回顾和学习下: 按照SQL:1992 事务隔离级别,InnoDB默认是可重复读的(REPEATABLE READ).MySQL/InnoDB 提供SQL标准所描述的所有四个事务隔 ...
- MySQL 四种事务隔离级的说明[转]
很早之前写的文章,重新回顾和学习下: 按照SQL:1992 事务隔离级别,InnoDB默认是可重复读的(REPEATABLE READ).MySQL/InnoDB 提供SQL标准所描述的所有四个事务隔 ...
- mysql四种事务隔离级的说明
·未提交读(Read Uncommitted):允许脏读,也就是可能读取到其他会话中未提交事务修改的数据 ·提交读(Read Committed):只能读取到已经提交的数据.Oracle等多数数据库默 ...
- 笔记:MYSQL四种事务隔离级。
1·未提交读(Read Uncommitted):允许脏读,也就是可能读取到其他会话中未提交事务修改的数据 脏读: 脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库 ...
- 【MySQL】我这样分析MySQL中的事务,面试官对我刮目相看!!
写在前面 相信大部分小伙伴在面试过程中,只会针对面试官提出的表面问题来进行回答.其实不然,面试官问的每一个问题都是经过深思熟虑的,面试的时间相对来说也是短暂的,面试官不可能在很短的时间内就对你非常了解 ...
- 记一次Mysql事务隔离级别的坑
最近在写代码调试时,遇到了一个问题. 遇到问题 具体操作如下: 1.调用方法A,并且方法A加上了@Transactional事务注解. 2.在方法A内部,查询并更新某个字段F的值. 3.处理其他逻辑. ...
- MySQL进阶15--TCL事务控制语言--建立结束事务/设置断点--默认隔离级别--脏读/幻读/不可重复读
#TCL事物控制语言 : /* Transaction control language : 事物控制语言 事务: 一个或者一组sql语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行; ...
- 数据库事务隔离级ORACLE数据库事务隔离级别介绍
本文系转载,原文地址:http://singo107.iteye.com/blog/1175084 数据库事务的隔离级别有4个,由低到高依次为Read uncommitted.Read committ ...
- mysql中不同事务隔离级别下数据的显示效果--转载
事务是一组原子性的SQL查询语句,也可以被看做一个工作单元.如果数据库引擎能够成功地对数据库应用所有的查询语句,它就会执行所有查询,如果任何一条查询语句因为崩溃或其他原因而无法执行,那么所有的语句就都 ...
- 浅谈mysql中不同事务隔离级别下数据的显示效果
事务的概念 事 务是一组原子性的SQL查询语句,也可以被看做一个工作单元.如果数据库引擎能够成功地对数据库应用所有的查询语句,它就会执行所有查询,如果任何一条查 询语句因为崩溃或其他原因而无法执行,那 ...
随机推荐
- ctfshow--web12 glob和show_source命令执行
查看源代码有提示 以为是cmd命令解过输入linux命令愣是没反应后来输入phpinfo()才有回显 原来是被误导了. 一开始想的是直接写入一句话木马 点击查看代码 @eval($_POST['att ...
- 玩转云端 | 真实模拟,即压即测,天翼云息壤性能测试PTS实践大揭秘!
满城春色惹人醉,恰是出游好时节. 伴随春暖花开,我国旅游市场快速升温,越来越多的人开始走出家门,去追寻久违的诗和远方.根据文化和旅游部数据中心近日测算,预计2023年,我国国内旅游人数约为45.5亿人 ...
- 帮您了解CDN节点如何做到访问加速与安全防护
本文分享自天翼云开发者社区<帮您了解CDN节点如何做到访问加速与安全防护>,作者:尹****荷 网站业务痛点 在当前网站快速发展的背景下,网站业务突增往往伴随着一系列网络安全隐患.主要会有 ...
- Q:oracle小于1的number,不显示小数点前的0?
oracle存储number类型数字 如果数字小于1 如0.35就会存储.35 省略掉前面的数字0 方法1: oracle 数据库字段值为小于1的小数时,转换到char类型处理,会丢失小数点前面的 ...
- POI包操作Excel代码
1.创建工作簿 (WORKBOOK) HSSFWorkbook wb = new HSSFWorkbook(); FileOutputStream fileOut = new File ...
- RabbitMQ(五)——发布订阅模式
RabbitMQ系列 RabbitMQ(一)--简介 RabbitMQ(二)--模式类型 RabbitMQ(三)--简单模式 RabbitMQ(四)--工作队列模式 RabbitMQ(五)--发布订阅 ...
- DeepSeek模型量化
技术背景 大语言模型(Large Language Model,LLM),可以通过量化(Quantization)操作来节约内存/显存的使用,并且降低了通讯开销,进而达到加速模型推理的效果.常见的就是 ...
- Typora Emoji图标
转自: https://www.cnblogs.com/wangjs-jacky/p/12011208.html People :smile: :laughing: :blush: :sm ...
- [THUPC2017] 天天爱射击 题解
俗话说的好,正难则反,既然不好想每一个子弹能打碎多少个木板,不如想每个木板被那枚子弹打碎. 然后就是显然的整体二分.由于可能木板不会被击碎,那些木板的分数会累加到最后一个子弹上,因此我们可以加一枚背锅 ...
- Nginx - [02] 安装部署&配置
官网下载地址:http://nginx.org/en/download.html 001 || 安装[windows] 解压之后,在命令提示符窗口启动nginx.exe 在浏览器访问80端口:loca ...