mysql的repeatable read事务隔离级别的测试

SQL事务隔离错误?`READ COMMITTED`与`REPEATABLE READ`的对比测试 MySQL的:通过MVCC机制实现了比ANSI标准更强的隔离性,默认避免幻读,但需警惕长事务导致的版本链膨胀。SQL Server的:需配合快照隔离实现类似的效果,适合读多写少的OLTP系统。跨数据库迁移建议:统一使用隔离级别,并通过应用层缓存或乐观锁机制处理并发冲突。通过合理选择隔离级别与优化事务设计,可显著提升数据库并发性能与数据一致性。实际项目中建议结合和性能监控工具持续调优。 阅读详情

转自:http://nihongye.javaeye.com/blog/28827

  1. 准备工作:   
  2.  CREATE TABLE `t` (                                          
  3.           `id` int(5) NOT NULL default '0',                         
  4.           `name` varchar(255) default NULL,                         
  5.           `version` int(5) default NULL,                            
  6.           PRIMARY KEY  (`id`)                                       
  7.         ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC     
  8.   
  9. insert into t (id,name,version) values (1,'c1',1);   
  10.   
  11. client1:   
  12. start transaction;   
  13.   
  14. mysql> SELECT @@tx_isolation;   
  15. +-----------------+   
  16. | @@tx_isolation  |   
  17. +-----------------+   
  18. | REPEATABLE-READ |   
  19. +-----------------+   
  20. 1 row in set (0.00 sec)   
  21.   
  22. mysql> select * from t where id = 1;   
  23. +----+------+---------+   
  24. | id | name | version |   
  25. +----+------+---------+   
  26. |  1 | c1   |       1 |   
  27. +----+------+---------+   
  28. 1 row in set (0.00 sec)   
  29.   
  30. client2:   
  31. start transaction;   
  32. mysql> select * from t where id = 1;   
  33. +----+------+---------+   
  34. | id | name | version |   
  35. +----+------+---------+   
  36. |  1 | c1   |       1 |   
  37. +----+------+---------+   
  38. 1 row in set (0.00 sec)   
  39.   
  40. client1:   
  41.   
  42. mysql> update t set name='c1_1',version=2 where id = 1;   
  43. Query OK, 1 row affected (0.00 sec)   
  44. Rows matched: 1  Changed: 1  Warnings: 0  
  45.   
  46. mysql> select * from t where id =1;   
  47. +----+------+---------+   
  48. | id | name | version |   
  49. +----+------+---------+   
  50. |  1 | c1_1 |       2 |   
  51. +----+------+---------+   
  52. 1 row in set (0.00 sec)   
  53.   
  54. mysql> commit;   
  55. Query OK, 0 rows affected (0.02 sec)   
  56.   
  57. client2:   
  58.   
  59. //因为repeatable read,只看到client1提交前的数据   
  60. mysql> select * from t where id=1 and version=1;   
  61. +----+------+---------+   
  62. | id | name | version |   
  63. +----+------+---------+   
  64. |  1 | c1   |       1 |   
  65. +----+------+---------+   
  66. 1 row in set (0.00 sec)   
  67.   
  68. mysql> update t set name='c2',version=3 where id = 1 and version = 1;   
  69. //影响行数为0   
  70. Query OK, 0 rows affected (0.00 sec)   
  71. Rows matched: 0  Changed: 0  Warnings: 0  
  72.   
  73. mysql> update t set name='c2',version=3 where id = 1 and version = 2;   
  74. //影响行数为1,说明更新语句的执行是看到提交的数据的   
  75. Query OK, 1 row affected (0.00 sec)   
  76. Rows matched: 1  Changed: 1  Warnings: 0  
  77. 总结:在mysql,repeatable read级别的事务,只保证看到的数据是一个镜像.   
  78. 就算该行数据被别的事务修改,当该事务也对数据进行修改,在提交时也不会产生任何错误.   
  79. 解决的办法:   
  80. 1.在应用端使用乐观锁的机制   
  81. 2.或者使用select .. for update或者SELECT ... LOCK IN SHARE MODE来对数据加.  
  82. 相关知识见:
    http://dev.mysql.com/doc/refman/5.0/en/innodb-lock-modes.html
    http://dev.mysql.com/doc/refman/5.0/en/innodb-transaction-isolation.html 
BERTopic安装指南:hdbscan依赖问题全解析(附解决方案) 本文详细解析了安装BERTopic时常见的hdbscan依赖报错问题,深入剖析了C++编译环境缺失、Python版本兼容性以及包管理渠道混用三大核心原因。针对Windows、macOS和Linux不同系统,提供了创建虚拟环境、使用conda安装预编译包、安装C++编译工具等具体解决方案,帮助用户顺利安装BERTopic并开始文本主题建模实践。 阅读详情

相关推荐

python电子学会三级的零碎笔记

‌示例‌:如果s = ['a', 'b', 'c'],则' '.join(s)+'\n'的结果是'a b c\n',写入文件时所有元素会在一行内显示,每个元素之间用空格分隔,末尾有一个换行符。(2) '\n'.join(s)‌:如果s = ['a', 'b', 'c'],则'\n'.join(s)的结果是'a\nb\nc',写入文件时每个元素会占据文件的一行。(1) ' '.join(s)+'\n'‌:这种方式首先将列表s中的每个元素通过空格连接成一个字符串,然后在字符串末尾添加一个换行符\n。

xzal12的博客 690

mysql隔离级别测试_mysql的repeatable read事务隔离级别的测试

准备工作:CREATE TABLE `t` (`id` int(5) NOT NULL default '0',`name` varchar(255) default NULL,`version` int(5) default NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMICinsert ...

weixin_30597089的博客 131

四阶龙格库塔方法求解一次常微分方程组

四阶龙格库塔方法求解一次常微分方程组一、写在前面二、四阶龙格库塔方法三、使用四阶龙格库塔方法求解一次常微分方程组 一、写在前面 龙格库塔方法是数值求解常微分非线性方程的有利工具,计算精度较高,通过缩短步进距离和增加阶数可以进一步控制误差范围。工程上较为常用的是四阶龙格库塔算法(R-K4),在计算收敛的情况下往往可以得到比较好的结果。 二、四阶龙格库塔方法 这里简单介绍一下算法的具体实现过程,不做详细的推导。其求解的问题是形如方程: y˙=f(y,t),其中t∈[t0,t1]初值y(t0)=c0 \dot{y

HelloWorldTM的博客 2万+

mysql 事务 Repeatable Read

脏读:读到别的事务没有提交的数据。 不可重复读:先前读取的数据,被别的事务改变了,再读就跟原来不一样了。 幻读:一个事务插入了某条数据,另一个事务去读插入的那条数据的时候发现没有,更新这条记录的时候又成功了,再次查询这条记录就出现了。

lwpoor123的博客 1278

别再死记硬背了!用这5个Qt Design Studio小项目,彻底玩转核心组件

本文通过5个Qt Design Studio实战项目,帮助开发者深入理解核心组件的协作与应用。从动态登录界面到游戏化任务列表,每个项目都展示了组件属性与交互设计的巧妙结合,让你不再死记硬背,而是真正掌握Qt Design Studio的核心技能。

weixin_29202213的博客 271

SAP SM30数据维护实战:条件筛选与动态校验的实现技巧

本文详细介绍了SAP SM30数据维护的实战技巧,重点讲解如何通过条件筛选实现精准数据查取,以及利用表维护生成器事件实现动态数据检查与校验。文章提供了从基础视图创建到高级事件编程的完整流程,包括调用函数VIEW_MAINTENANCE_CALL传递筛选条件,以及在NEW_DATA和CHANGE_SAVE事件中编写业务规则校验逻辑,帮助开发者提升SM30的管控能力与数据质量。

q9w8e7r6t5的博客 521

MySQL事务隔离级别为"REPEATABLE-READ"下的"幻读"现象

我们用一个示例来讲解这种情况,及在并发事务进怎样避免这种情况。 Create Table: CREATE TABLE `t1` (   `a` int(11) NOT NULL,   `b` int(11) DEFAULT NULL,   PRIMARY KEY (`a`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; session1

很多时候,你缺少的不是知识而是热情 8312

单片机OTA升级:Bootloader如何多重校验保障APP完整性?

本文详细介绍了单片机OTA升级中Bootloader如何通过CRC校验、数字签名、版本比对和存储位置检查等多重校验机制保障APP完整性。CRC校验作为快速检测数据完整性的核心手段,结合其他安全措施有效防止设备变砖和安全漏洞,确保远程升级的可靠性。

l3m4n的博客 981

mysql-Innodb事务隔离级别-repeatable read详解

  原文地址:http://orzdba.wordpress.com/2011/03/03/transaction_isolation_levels/一、事务隔离级别ANSI/ISO SQL标准定义了4中事务隔离级别:未提交读(read uncommitted),提交读(read committed),重复读(repeatable read),串行读(serializable)

3925

将pytroch模型转为paddlelite模型并集成到android程序中

在android中使用paddlelite加载yolov5模型识别opencv读取的摄像头信息

qq_56460466的博客 1555

Autosar CAN 网络管理测试用例(3)——Repeat Message Timer 时间测试

Autosar CAN 网络管理测试用例(3)——Repeat Message Timer 时间测试

蚂蚁小兵 2464

MySQL数据库——-事务的隔离级别(四)Repeatable read

文章目录2、Read committed(读提交)脏读不可重复读幻读 2、Read committed(读提交) 可以避免脏读,但可能出现不可重复读和幻读。 设置MySQL的事务隔离级别为REPEATABLE-READ 在my.ini配置文件最后加上如下配置,然后在服务中重启MySQL服务[mysqld] transaction-isolation = REPEATABLE-READ 查...

paku-san的博客 1397

【Bug已解决】Codex CLI 报错 You‘ve hit your usage limit 解决方案

Codex CLI 密集使用时触发 You've hit your usage limit 限流报错,本质是订阅套餐额度机制在正常发挥作用。文中给出等待滚动重置、拆分大任务、主动管理上下文、升级套餐、团队排队机制等完整解决方案。

博客 1万+

MySql 事务隔离级别(READ_COMMITTED/REPEATABLE_READ)遇到问题后,相关测试

1:线上问题描述: 1.1:线上使用MySql 默认的隔离级别:REPEATABLE_READ, 1.2:线上有相关流程:当相关机构授信流程N 分钟没有回调时,直接触发其他机构授信问询机构, 触发下一家流程使用两种方式进行:一种是采用延时队列进行,一种是使用类似补偿机制:task 轮训触发. 1.3:线上出现单子:同时由 延时队列以及task触发,并且时间间隔很短,可以认为是并发进行 延时队列处理相关时间点: ...

u013833031的博客 892

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

MySQL5.7下事务隔离级别对性能的影响

之前工作的公司是一家外包企业,客户基本上都购买云服务,生产MySQL数据库版本是5.6。最近入职了一家新公司,统一使用自己维护的MySQL,版本都是5.7.16。这些天花了不少时间都在做MySQL的基准测试工作,通过测试发现,到了MySQL5.7,事务隔离级别对性能的影响好像已经消除了。      我的测试主要采用MySQL基准测试工具sysbench(https://github.com/ak

蛙鳜鸡鹳狸猿 1736

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Spring事务管理与数据库隔离级别的关系(Spring+mysql)

数据库事务的隔离级别有4个,由低到高依次为Read uncommitted、Read committed、Repeatable read、Serializable,这四个级别可以逐个解决脏读、不可重复读、幻读这几类问题。   √: 可能出现    ×: 不会出现 脏读 不可重复读 幻读 Read uncommitted

world_snow的博客 4535

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Java-134 深入浅出 MySQL事务隔离级别全解析:从READ UNCOMMITTED到SERIALIZABLE SQL实测

5.7 及以下版本,可通过 @@SESSION.tx_isolation 查询会话级别;在 MySQL 8.0 及以上版本,变量更名为 @@SESSION.transaction_isolation。四种隔离级别分别是 READ UNCOMMITTED(读未提交,允许脏读,性能高但一致性差)、READ COMMITTED(读已提交,避免脏读但可能出现不可重复读)、REPEATABLE READ(可重复读,MySQL 默认级别,防止脏读和不可重复读,但可能出现幻读)以及 SERIALIZABLE(串行化,最高

谢谢你的喜欢 我们一起无限进步 1228

mysql innodb默认事务隔离级别-repeatable read在事务中是否能导致幻读的实验

测试准备:   1.show variables like '%unsafe%';确保innodb_locks_unsafe_for_binlog值为 OFF(或者0);   2.show variables like '%tx%'; 确保 tx_isolation 的值为 REPEATABLE-READ。   3.新建表t_test : CREATE TABLE ...

dongjujing1339的博客 139

数据库隔离级别

部分测试依赖于数据库隔离级别: QuoteLimitInstServiceBondTest 投资指令和委托联合控额测试 该测试在多线程限额指令确认时事务之间存在值依赖,如果Mysql数据库采用默认隔离级别(REPEATABLE READ),测试会失败,因为后面的事务无法读取到前面事务针对指令表的修改。 一 查询数据默认隔离级别 SELECT @@GLOBAL.tx_isolation, @@tx_...

m0_37607945的博客 119

mysql隔离级别验证_mysql 隔离级别测试

1 设置隔离级别,包括 全局@@global.tx_isolation, 会话级别@@session.tx_isolationmysql workbench的会话2 创建测试表注意 unsigned auto_increment primary key用法 ,默认引擎的设置#创建测试表use test;drop table if exists transaction_test;create t...

weixin_31487917的博客 182

mysql的四种隔离级别

原文转载链接:https://zhuanlan.zhihu.com/p/76743929?utm_source=wechat_session&utm_medium=social&utm_oi=803980807206236160 下面的试验博主都进行了一一验证。 什么是事务 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。也就是事务...

小黑哥儿的博客 1179

004 MySQL的4种隔离级别,通俗易懂小例子验证

学软件技术,读第一手资料,去官方网站:MySQL 5.7参考手册 也可以看看比较经典的书籍,如《高性能MySQL》等 上篇文章说了“事务”的基本概念。 1、这一篇开始讲讲MySQL的4隔离级别。 (1)READ UNCOMMITTED(未提交读) 在READ UNCOMMITTED级别,事务中的修改,即使没有提交,对其他事务也都是可见的。事务读到未提交的数据,这被称为脏读。实际应用中很少使用。 (2)READ COMMITTED(提交读) 大多数数据库系统的默认隔离级别都是 READ COMM

从2026-09-21开始专注于AI,以前是后端研发、大数据研发等 565

MySql数据库 事务隔离级别

SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。 Read Uncommitted(读取未提交内容)        在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用,因为它的性能也不比其他级别好多少。读取未提交的数据,也被称之为脏读(Dirty

jcxch的专栏 438

MySQL事务隔离级别详解

最近看了一遍关于讲解mysql事务隔离的文章,感觉很不错,转载mark一下:http://xm-king.iteye.com/blog/770721 SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。 Read Uncommitted(读取未提交内容)        在该隔

拼搏的小船长 305

别再死记硬背了!用Spring Boot + MySQL实战演示四种隔离级别下的数据‘错乱’现场

本文通过Spring Boot和MySQL实战演示了四种事务隔离级别下的数据异常现象,包括脏读、不可重复读和幻读。通过代码示例详细解析了READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ和SERIALIZABLE隔离级别的行为差异,帮助开发者直观理解隔离级别的选择与实践建议。

weixin_30906185的博客 316
上一篇: ASP连接MYSQL代码
下一篇: 安装VMWARE TOOLS的步骤
subnet
博客等级 码龄23年 9粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值