一、可重复读
Oracle的默认隔离级别为 READ COMMITTED ,而MySQL的默认隔离级别为 REPEATABLE READ 感觉MySQL的隔离级别还要高些,从理论上来讲更安全,但是。。
经过测试发现,虽然保证了可重复读的表象(一个事务中两次的读取的结果都是一致的),之前以为可重复读时,可以阻止其他事务进行修改,但是经过验证
1、查看数据库的隔离级别
SELECT @@tx_isolation;
-----------------
REPEATABLE-READ
2、模拟两个客户端进行操作,在工具中,需要打开两个连接,而不是查询窗口。
客户端A
SET autocommit=0; START TRANSACTION; -- 第一次查询 SELECT * FROM t1; -- 第二次查询(在客户端B执行完成后,再单独执行该语句) SELECT * FROM t1;
客户端B执行
SET autocommit=0; START TRANSACTION; UPDATE t1 SET a =99 WHERE b=3000; COMMIT;
验证结果发现,即使在A事务执行过程中数据被B事务修改了,但是A的数据还是没有变化,虽然解决了两次读取数据不一致的问题,但是隐患更大,都不知道有没有被修改,因此直接取数来进行处理其实还是有问题的
问题虽然可以通过 读锁(共享锁)实现 LOCK IN SHARE MODE
如:SELECT * FROM t1 WHERE a=50 LOCK IN SHARE MODE
这样就可以阻止其他事务,进行新增,修改,删除,如果a建了索引,锁的条件为a的记录;如果没有建索引锁的是整张表,其他记录也不能修改了;必须等到此事务提交才行,所以觉得还不如事务隔离级别设置为READ COMMITTED,虽然会出现不可重复读现象,但是至少每一时刻取的数据是真实的。
二、MySQL的innoDB存储引擎支持的是行锁
经过验证发现,只有只有修改条件走索引才锁记录,否则会锁表。
验证语句可以参考附件
相关推荐
学习docker安装mysql我遇到很多坑,大约花了三天才解决掉这个问题,真的是太坎坷了,差点就放弃让我学习Java的心态了。首先往VM安装带有docker东西的虚拟机,查看ip地址是192.168.200.128.然后按照网上步骤docker ...
配合提供的`MySQL安装教程.docx`文档,你可以更详细地了解每个步骤,避免遇到博主已经踩过的坑,确保安装过程顺利。 安装完成后,你可以使用MySQL Workbench连接到新安装的MySQL Server,进行数据库创建、表设计、...
mysql主从复制 踩完坑给大家 3分 完整,让大家少踩坑.
官网下载最新版本MySQL,这里下载的是解压版的。 解压,解压完成之后,配置系统环境变量,把安装路径添加到Path中去(后面记得加;号) 创建my.ini文件 以管理员的身份打开cmd命令,切换目录到安装路径下的bin目录,...
mysql部署过程中往往会遇到很多坑,笔者也是在踩了各种坑之后才总结出来这样一个脚本,可能还不太完善,或者对于不同的环境会出现各种问题,望理解
互联网资讯,技术简介,IT、AI技术,人工智能
最近在尝试从0开始搭建框架,结果在mybatis这块就踩了很多坑。于是就决定写篇文章记录一下。 https://blog.csdn.net/lxyoucan/article/details/126233203
- **云服务**:腾讯云提供了丰富的云服务支持,如DNS解析、HTTPS支持、对象存储、CDN加速、云Redis、云数据库MySQL等,可以大大提高开发效率和系统稳定性。 **3. 安全性** - **数据安全**:采用HTTPS协议传输敏感...
之前踩到过MySQL主键溢出的情况,通过prometheus监控起来了,具体见这篇MySQL主键溢出复盘 这次遇到的坑,更加的隐蔽。 是一个log表里面的一个int signed类型的列写满了。快速的解决方法当然还是只能切新表来救急了...
我是自己摸索了半个月才全部搭建完成。几乎将所有能踩的坑都踩了一遍才搭建起来的。
坚持分享自学Java经历、计算机知识、Java前端技术和面试经验等,希望能帮助到更多的小伙伴,我踩过的坑你们不要再踩了。点击此处查看我的自学路线。面试网站大彬自己搭建了一个小破站,将本仓库所有的面试题都整理到...
xenon/MySQLPlus在使用中踩到的坑主要包括了历史包袱问题、GTID使用限制、以及业务对VIP方式的连接等问题。徐晨亮通过实际案例分析了这些问题,并总结了解决方案。例如,历史包袱问题涉及到未开启GTID的情况,这是...
同时,文档也提供了作者踩过的坑,旨在帮助读者避免相同的错误。 标签解释 本文档的标签包括 Zabbix 和 PHP,表明本文档的主要内容是 Zabbix 的安装指南,并且使用 PHP 作为 Web 服务器端语言。 详细知识点 ### 1...
以 Java 开发者为中心视角,划分为编程规约、异常日志、单元测试、安全规约、MySQL 数据库、工程结构、设计规约七个维度。愿景是码出高效,码出质量。代码质 量的提升是尽可能少踩坑,杜绝踩重复的坑,切实提升系统...