概述

今天主要分享一个最近做的实验,主要是测试mysql数据库在RR和RC不同事务隔离级别下的表现。

MySQL使用可重复读来作为默认隔离级别的主要原因是语句级的Binlog。RR能提供SQL语句的写可串行化,保证了绝大部分情况(不安全语句除外)的DB/DR一致。

下面以mysql5.7版本(默认binlog格式为row,事务隔离级别为RR)开始测试


1、binlog_format=row,事务隔离级别=RC

由以上测试知,RC隔离级别下,会话2执行时序在会话1事务的语句之间,并且会话2的操作影响了会话1的结果,这会对Binlog结果造成影响。

由于Binlog中语句的顺序以commit为序,两会话的执行时序是:

--实时查看指定binlog文件的内容python  binlog2sql.py -hxx.xx.xx -uroot -p 密码 -d test --start-file='mysql-bin.000031' |grep test================================================================================================================DELETE FROM `test`.`t1` WHERE `c2`=2 AND `c1`=2 LIMIT 1; #start 283018 end 283245 time 2020-05-21 10:50:57UPDATE `test`.`t2` SET `c2`=3, `c1`=1 WHERE `c2`=1 AND `c1`=1 LIMIT 1; #start 283689 end 283944 time 2020-05-21 10:50:03UPDATE `test`.`t2` SET `c2`=3, `c1`=2 WHERE `c2`=2 AND `c1`=2 LIMIT 1; #start 283689 end 283944 time 2020-05-21 10:50:03UPDATE `test`.`t2` SET `c2`=4, `c1`=1 WHERE `c2`=3 AND `c1`=1 LIMIT 1; #start 283689 end 284044 time 2020-05-21 10:51:06

2、binlog_format=row,事务隔离级别=RR

在RR中,会话1语句update t2 set c2 = 3 where c1 in (select c1 from t1)会先在t1的记录上S锁(5.1的RC中不会上这个锁,但5.0的RC会),接着在t2的满足条件的记录上X锁。由于会话1没提交,会话2的delete语句需要等待会话1的S锁释放,于是阻塞。

因此,在RR中,以上测试会话1、会话2的依次执行,与Binlog的顺序一致,从而保证DB/DR一致。

由于Binlog中语句的顺序以commit为序,两会话的执行时序是:

--实时查看指定binlog文件的内容python  binlog2sql.py -hxx.xx -uroot -p xx -d test --start-file='mysql-bin.000031' |grep test================================================================================================================UPDATE `test`.`t2` SET `c2`=3, `c1`=1 WHERE `c2`=1 AND `c1`=1 LIMIT 1; #start 3986 end 4241 time 2020-05-21 11:09:30UPDATE `test`.`t2` SET `c2`=3, `c1`=2 WHERE `c2`=2 AND `c1`=2 LIMIT 1; #start 3986 end 4241 time 2020-05-21 11:09:30UPDATE `test`.`t2` SET `c2`=4, `c1`=1 WHERE `c2`=3 AND `c1`=1 LIMIT 1; #start 3986 end 4359 time 2020-05-21 11:10:22UPDATE `test`.`t2` SET `c2`=4, `c1`=2 WHERE `c2`=3 AND `c1`=2 LIMIT 1; #start 3986 end 4359 time 2020-05-21 11:10:22DELETE FROM `test`.`t1` WHERE `c2`=2 AND `c1`=2 LIMIT 1; #start 4390 end 4617 time 2020-05-21 11:10:12

觉得有用的朋友多帮忙转发哦!后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~

mysql数据库新建一个递增的_分享一个mysql实验—基于数据库事务隔离级别RR及RC的测试...相关推荐

  1. 数据库脏读,不可重复度,幻读以及对应的事务隔离级别

    1. 脏读: 所谓脏读,即"无效事务读出".也就是说,一个事务读取到另一个事务没有提交的数据.我们举个例子:事务A1修改了一行数据,但是还没有提交(还没写入硬盘),这时候事务A2读 ...

  2. MySQL事务隔离级别和Spring事务关系介绍

    事务隔离级别介绍 隔离级别 脏读 不可重复读 幻读 未提交读(Read uncommitted) 可能 可能 可能 已提交读(Read committed) 不可能 可能 可能 可重复读(Repeat ...

  3. 五分钟搞清楚MySQL事务隔离级别

    好久没碰数据库了,只是想起自己当时在搞数据库的时候在事务隔离级别这块老是卡,似懂非懂的.现在想把这块整理出来,尽量用最简洁的语言描述出来,供新人参考. 首先创建一个表account.创建表的过程略过( ...

  4. mysql不支持python3吗_MySQL的4种事务隔离级别你还不清楚吗?

    前言 现在想把数据库这块整理出来,尽量用最简洁的语言描述出来,供新人参考. 首先创建一个表 account.创建表的过程略过(由于 InnoDB 存储引擎支持事务,所以将表的存储引擎设置为 InnoD ...

  5. mysql 事物 锁行 测试_MySQL Transaction--RR事务隔离级别下加锁测试

    ============================================================================== 按照非索引列更新 在可重复读的事务隔离级别 ...

  6. java 一个大事务下的新增、修改、查询_重新学习Mysql数据库8:MySQL的事务隔离级别实战...

    本文转自:https://blog.csdn.net/sinat_27143551/article/details/80876127 本系列文章将整理到我在GitHub上的<Java面试指南&g ...

  7. mysql 事务补偿_TCC补偿性策略_彻底学习数据库事务 seata分布式事务 共享 排它锁 死锁 索引 Spring事务 隔离级别等_MySQL视频-51CTO学院...

    课程总计41课时,从什么是事务讲起,直到分布式事务解决方案,很的0基础基础与提升系列课程.对于难以理解的知识点,全部用画图+实战的方式讲解. 彻底明白事务的四个特性:原子性.一致性.隔离性.持久性,用 ...

  8. mysql 隔离级别 快照_「数据库架构」三分钟搞懂事务隔离级别和脏读

    重要要点 仅凭ACID或非ACID来思考,还需要知道数据库支持的隔离级别. 标榜为"最终一致"的某些数据库可能返回与任何时间点不一致的结果. 一些数据库提供的隔离级别比您要求的更高 ...

  9. mysql数据库事务隔离级别是_数据库事务隔离级别-MySQL为例 · Sean

    在银行系统的存取款过程中,当遇到对一个账户并发存取的时候,系统该如何处理比较好.可能不少人会想到线程同步,然而在应用层使用同步会导致对象锁定,大大影响并发效率.此时,充分利用数据库的事务隔离机制可以很 ...

最新文章

  1. 这款耳机一点不输千元级的AirPods
  2. Linux串口读取与解析
  3. 我在上海的AI新地标,看懂了明略的游戏规则
  4. hdu4302 set或者线段树
  5. 122. Leetcode 647. 回文子串 (动态规划-子序列问题)
  6. 4种动态加载JS的方法
  7. 2015年的Java –重大事件
  8. c++ 箭头符号怎么打_老司机怎么测量三极管管型、管脚和性能?三极管测量此中有深意...
  9. 01-06 Linux常用命令-统计
  10. python读取properties文件_读取properties文件
  11. 【JanusGraph入门】(第一天,下载项目)
  12. 学习笔记(1):2020软考数据库系统工程师-基础知识培训视频-计算机系统--体系结构概述...
  13. 海康ehome协议分析(3):PTZ云台控制
  14. 下载论文的技巧及经验
  15. 两个栈实现一个队列(图解),一看就懂
  16. 买腾讯云服务器怎么选择
  17. 远程服务器显示登录密码,远程服务器怎么知道登录密码
  18. Geronimo入门与进阶
  19. 编写一个C语言程序 实现自我介绍,用c语言编程实现,别出心裁的情侣拍照
  20. CSS小应用(圆形关闭按钮、大于号、可旋转三角箭头)

热门文章

  1. Codeforces Round #598 (Div. 3) E. Yet Another Division Into Teams dp + 输出方案
  2. Mod, Or and Everything HDU - 6950
  3. cf1504. Travelling Salesman Problem
  4. 【正睿2021寒假省选第二轮集训 day 1】令牌生成 (组合数+二分)
  5. 不止代码:循环比赛(分治)
  6. YbtOJ#532-往事之树【广义SAM,线段树合并】
  7. ATcoder-Replace Digits【线段树】
  8. hdu5115-Dire Wolf【区间dp】
  9. ssl初一组周六模拟赛【2018.4.21】
  10. 2018GDKOI——记录