事务ID分配时间

  • 我们一般会用start transaction或begin开始一个事务,自然而言的我们认为在这个时候就已经分配了一个事务ID,其实并不是这样,我们下面来看一个案例
  • 首先我们添加测试数据
  • 我们开启两个客户端,分别为session1和session2,事务隔离级别为RR
  • 大家心里会有个疑问,为什么我sessio1先开启的事务,但session2事务提交后,我还能看到了,这不成了不可重复读了吗,其实很简单,那是因为session1的start transaction;并没有分配事务ID,到第5步的时候才分配,所以session1.trx_id>session2.trx_id,所以看到session2提交的数据这就很正常了
  • 那么大家就会有疑问,RR隔离级别在什么时候才会分配事务ID呢,有两种方法分配
    1. start transaction; 后面的第一个select
    2. 要不就以这种方式开启一个事务 START TRANSACTION WITH CONSISTENT SNAPSHOT;
  • 下面我们来试下第一种方法, 我们把id=100的还是改为1来做测试
    • 这时候session1查出来的值还是1,但是因为我们在第3步已经为session1分配了trx_id,而session2在step4才分配,因此session1.trx_id<session2.trx_id,所以就算session2提交了,session1也看不到
  • 下面我们来试下第二种方法
    • 还是没看到session2修改后的100,那说明START TRANSACTION WITH CONSISTENT SNAPSHOT;就会分配事务ID
  • 提示:
    • 什么时候分配事务ID,可以通过监控这个表的记录 select * from information_schema.INNODB_TRX;每执行一步就看下数据,那么就自然而然的知道是什么时候分配的事务ID了
  • 原文地址:https://blog.51cto.com/itzhoujun/2365607

    时间: 2024-11-25 14:21:19

    事务ID分配时间的相关文章

    Error-ASP.NET:由于未能找到 id 为“FileUpload1$gvFiles$ctl02$lnkBtnRemoveFile”的控件或在回发后将同一 ID 分配给另一个控件,导致发生错误。如果未分配 ID,请显式设置引发回发事件的控件的 ID 属性以避免此错误。

    ylbtech-Error-ASP.NET:由于未能找到 id 为“FileUpload1$gvFiles$ctl02$lnkBtnRemoveFile”的控件或在回发后将同一 ID 分配给另一个控件,导致发生错误.如果未分配 ID,请显式设置引发回发事件的控件的 ID 属性以避免此错误. 1.返回顶部 1. “/”应用程序中的服务器错误. 由于未能找到 id 为“FileUpload1$gvFiles$ctl02$lnkBtnRemoveFile”的控件或在回发后将同一 ID 分配给另一个控件

    你时间总不够用?请收下这套最佳的分配时间的方法

    有谁要是为了赚得更多的钱而加班加点. 更加卖力地去工作, 他就不会真正变得更加富有. 被牺牲掉的业余时间的价值必须从其更高收入中扣除, 而且被牺牲掉的这部分的价值通常比财务上得到的要高很多. 为了赚更多的钱而牺牲掉您的业余时间, 靠这种方法您不可能实现真正的富有. 真正的富有是指具有由少变多的本事, 而并非必须为此做出同样程度的牺牲. 真正的成功意味着: 您能够获得更高的收入, 但您的工作时间并没有增加, 甚至还减少了. 真正的自由不是指摆脱了工作的自由, 而是指在工作中的自由, 也就是说, 有

    .NET 分布式自增Id组件(解决自动分配机器Id、时间回拨问题)

    目录 简介 产生背景 使用方式 原始版 完美版 测试 结尾 简介 IdHelper是一个.NET(支持.NET45+或.NET Standard2+)生成分布式趋势自增Id组件,有两个版本:原始版为基于雪花Id(不了解请自行百度)方案,需要手动管理设置WorkerId:完美版在原始版的基础上使用Zookeeper来解决原始版中的WorkerId的分配问题和时间回拨问题. 原始版安装方式:Nuget安装IdHelper即可 完美版安装方式:Nuget安装IdHelper.Zookeeper即可 请

    [ios学习]零基础学习iOS开发如何分配时间

    在培训期间,学生的时间应该如何分配 学生在学习期间的主要工作时间分配 9:00~ 9:30,认真听同学的学习阶段中的分享,俗话说的好"三人行,必有我师"; 9:30~ 18:00,认真听老师的课堂上课,并且要准备好一个手写笔记本,好记性不如烂笔头,当然我个人认为记录在电脑上,并不靠谱,而且在复习时还费眼,我从开始上学到现在就一直有在笔记本上写写画画的习惯; 19:00~ 20:00,用一个小时的时间,回忆今天上课的知识点,这时笔记本的重要性就体现了,它可以帮助我们心无旁骛的复习和总结;

    redis事务和过期时间

    1. 事务 redis中的事务是一组命令的集合.redis的事务:multi->queued->exec. redis保证一个事务中的所有命令要么都执行要么都不执行.如果在发送exec命令前客户端断线了,redis会清空事务队列,事务中的所有命令都不会执行.而一旦客户端发送了exec命令,所有的命令就都会被执行,即使此后客户端断线也没关系,因为redis中已经记录了所有要执行的命令. 如果一个事务中的某个命令执行出错: 1)语法错误:只要有一个命令有语法错误,执行exec命令后redis就会直

    rqnoj 分配时间

    题目描述 小王参加的考试是几门科目的试卷放在一起考,一共给t分钟来做.他现在已经知道每门科目花的时间和得到的分数的关系,还有写名字要的时间(他写自己的名字很慢)请帮他算一下他最高能得几分.总分一定时,第一门科目成绩尽量高,第一门科目成绩也一样时,第二门科目成绩尽量高…………以次类推.如果放弃某一门的考试(花的时间为0),那么名字也就不用写了. 样例说明 第一门:0分钟:第二门:3分钟,写名字1分钟,做题目2分钟,得3分:第三门:2分钟,写名字1分钟,做题目1分钟,得3分.总共得6分. 数据范围

    学会管理你的时间,合理分配时间,高效率生活!

    生活中,我们每天都忙忙碌碌,时光飞逝,回顾过去却不知道时间丢在了哪里?就像那首歌,时间都去哪了?还没好好感受年轻就老了!如果每天都浑浑噩噩.走一步看一步的去生活,就真的荒度了,真是惋惜!那么,从现在开始珍惜时间吧,给你的每一天.每一时都做个规划~~~~~~ 1,了解你现在的学习习惯.我们在做任何改变之前,都应该了解现在我们是什么样子的,否则我们怎么知道该改变什么呢?每天晚上回顾一下你今天都做了些什么,你可以把这个叫做学习日记或者别的什么.如果你觉得自己的记性不好的话,你也可以随时携带一个小本子,

    设置mysql 事务锁超时时间 innodb_lock_wait_timeout

    Mysql数据库采用InnoDB模式,默认参数:innodb_lock_wait_timeout设置锁等待的时间是50s,一旦数据库锁超过这个时间就会报错. mysql> SHOW GLOBAL VARIABLES LIKE 'innodb_lock_wait_timeout';+--------------------------+-------+| Variable_name | Value |+--------------------------+-------+| innodb_lock

    深入理解mysql锁与事务隔离级别

    一.锁 1.锁的定义 锁即是一种用来协调多线程或进程并发使用同一共享资源的机制 2.锁的分类 从性能上分类:乐观锁和悲观锁 从数据库操作类型上分类:读锁和写锁 从操作粒度上分类:表锁和行锁 2.1 从性能上分类 2.1.1 乐观锁 乐观锁顾名思义就是操作的时候很乐观,认为操作不会产生并发问题(不会有其他线程对数据进行修改),因此不会上锁.但是会在更新时判断其他线程再这之前有没有对数据进行修改,一般会使用版本号机制或CAS算法实现. 2.1.1.1 版本号机制 实现方式: 取出记录时,获取当前ve