mysql不同隔离级别事务插入数据

news2024/11/16 19:51:27

文章目录

  • 前言
  • 一、问题
  • 二、测试
    • 2.1.RR级别,mysql默认级别
      • 2.1.1 打开一个mysql窗口,事务A
      • 2.1.2 打开另一个窗口,事务B
      • 2.1.3 提交事务A,再看结果如下
    • 2.2 READ-COMMITTED 级别下测试
      • 2.2.1修改数据库的my.ini文件修改隔离级别
      • 2.2.2 查看隔离级别是否已经修改
      • 2.2.3 开始事务A
      • 2.2.4开始事务B
      • 2.2.5 查看结果
      • 2.2.6 commit事务A,然后查看结果
    • 2.3 READ-UNCOMMITTED下测试
      • 2.3.1 代码如下
      • 2.3.2 查看结果
    • 2.4 SERIALIZABLE下测试
      • 2.4.1 代码
      • 2.4.2 查看结果
  • 总结


前言

面试中问到了相关问题,做下问题记录

一、问题

问题是这样的,数据库默认隔离级别下,事务A插入一条数据,没有提交,事务B插入一条数据,提交,表id为自增,如果表是空表,事务A和事务B的id分别是多少。

二、测试

2.1.RR级别,mysql默认级别

2.1.1 打开一个mysql窗口,事务A

执行代码块

start transaction;
insert into a(age) value(1);

2.1.2 打开另一个窗口,事务B

执行

start transaction;
insert into a(age) value(2);
commit;

查看结果如下
在这里插入图片描述

2.1.3 提交事务A,再看结果如下

在这里插入图片描述
可以看到事务A的id是1,事务B的id是2,和先后commit没有关系。

2.2 READ-COMMITTED 级别下测试

2.2.1修改数据库的my.ini文件修改隔离级别

transaction-isolation=READ-COMMITTED

重启mysql

2.2.2 查看隔离级别是否已经修改

查看隔离级别命令

show variables like 'transaction_isolation';

在这里插入图片描述
可以看到已经生效了。

2.2.3 开始事务A

start transaction;
insert into a(age) value(3);

2.2.4开始事务B

start transaction;
insert into a(age) value(4);
commit;

2.2.5 查看结果

在这里插入图片描述

2.2.6 commit事务A,然后查看结果

在这里插入图片描述
可以看到rc级别下和rr级别是一样的。

2.3 READ-UNCOMMITTED下测试

2.3.1 代码如下

事务A

start transaction;
insert into a(age) value(5);

事务B

start transaction;
insert into a(age) value(6);
commit;

2.3.2 查看结果

在这里插入图片描述
可以看到已经都插入了,commit事务A也是一样的,并且顺序是事务A到事务B,id增长。

2.4 SERIALIZABLE下测试

2.4.1 代码

事务A

start transaction;
insert into a(age) value(7);

事务b

start transaction;
insert into a(age) value(8);
commit;

2.4.2 查看结果

在这里插入图片描述
commit事务A后看结果
在这里插入图片描述
可以看到一样是先开始事务的id先加一。

总结

1.mysql的数据库自增id和数据库的隔离级别没有关系,都是只要开始了事务,id就会增加1,后面的事务再执行就在原来的基础上加1。
2.oracle 前同事测试和mysql不一样,是谁先提交谁加1,这个我没有测试过,刚兴趣的可以自己测试下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/700686.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

国产MCU-CW32F030开发学习-OLED模块

国产MCU-CW32F030开发学习-OLED模块 硬件平台 CW32_48F大学计划板CW32_IOT_EVA物联网开发评估套件0.96 IIC oled模块 软件平台 Keil MDK 5.31IAR串口调试助手 IIC总线 处理器和芯片间的通信可以形象的比喻成两个人讲话:1、你说的别人得能听懂:双…

【AUTOSAR】AUTOSAR开发工具链(五)----polyspace-bug-finder 简单操作说明

1、打开polyspace-bug-finder,新建工程文件:File New Project,命名,选择保存路径,然后点击Next。 2、找到需要检测的文件,然后点击“Add Source Files” Finish 3、在Configuration左边窗口点击“…

HotSpot 虚拟机对象探秘

HotSpot 虚拟机对象探秘 对象的内存布局 在 HotSpot 虚拟机中,对象的内存布局分为以下 3 块区域: 对象头(Header) 实例数据(Instance Data) 对齐填充(Padding) 对象头 对象头记录了…

FreeRTOS_调度器开启和任务相关函数详解

目录 前言 1. 调度器开启过程分析 1.1 指令集 1.2 任务调度器开启函数分析 1.2.1 内核相关硬件初始化函数分析 1.2.2 使能 FPU 函数分析 1.2.3 启动第一个任务 1.2.4 SVC 中断服务函数 1.2.5 空闲任务 2. 任务创建过程分析 2.1 任务创建函数分析 2.2 任务初始化函…

K8S之可用年限修改

K8S之可用年限修改 1. 查看证书有效期: [rootmaster1 kubernetes]# kubeadm alpha certs check-expiration由上图可见,除了ca根证书,其他证书有效期都是1年。 2. go环境部署: //下载go二进制包 wget https://studygolang.com/…

基于matlab使用 HOG 功能和多类 SVM 分类器对数字进行分类(附源码)

一、前言 此示例说明如何使用 HOG 功能和多类 SVM 分类器对数字进行分类。 对象分类是许多计算机视觉应用中的一项重要任务,包括监控、汽车安全和图像检索。例如,在汽车安全应用程序中,您可能需要将附近的对象分类为行人或车辆。无论要分类…

CentOS Linux的最佳替代方案(一)_Rocky Linux OS 8.6基础安装教程

CentOS Linux的最佳替代方案(一)_Rocky Linux OS 8.6基础安装教程 一 Rocky Linux介绍和发展历史 Rocky Linux 官网:https://rockylinux.org/ 在CentOS官方宣布停止Centos的维护之后,Centos的创始人Gregory Kurtzer宣布启动新的…

2023年上半年部分团队的总结

(目前还是草稿版本) 写作,慢思考: 软件团队每天有繁忙的工作,有很多待办事项,会议,口头交流,线上的 bug 要处理,报表要生成和解释… … 一个月过去了,正想总…

数字化远传表计实验的记录

国网去年4月份出了一个《智慧变电站技术规范第 4 部分:数字化远传表计(试行版)》,对SF6数字化密度表、避雷器数字化泄漏电流表、变压器数字化油温计等设备数据通信做了要求。数字化感知单元与监测模块之间宜采用有线通信方式&…

深度学习:什么是多层感知机(神经网络)

文章目录 1.神经网络2.反向传播算法3.激活函数4.损失函数5.神经网络的使用场景参考 1.神经网络 神经网络是一种计算模型,它受到人脑神经元之间连接和信息处理方式的启发。它由许多简单的处理单元(称为神经元或节点)组成,并通过这…

innovus/ICC2:如何copy metal shape/via

如题,两家工具复制metal shape和via都可以用快捷键C,其中innovus还支持在复制过程中按"F3",调整复制的次数。 这里主要说一下命令: ICC2: copy_objects -x_pitch/y_pitch $pitch \ -x_times/-y_times $times \ [get_selection]/[get_shapes xx]/[get_v…

QWidget的相关API函数

目录 QWidget的相关API函数 设置父对象 窗口位置 窗口尺寸 窗口标题和图标 信号 槽函数 示例1(设置窗口大小): 示例2(移动窗口,修改窗口,获取窗口位置信息): 示例3 &#x…

微信:注意要收费了!

目录 收费说明手机号快速验证组件手机号实时验证组件付费管理修改建议 收费说明 自2023年8月26日起,小程序获取手机号组件将需要付费使用。 手机号快速验证组件 https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/getPhoneNumber.html 新版…

跳跃与舞动:解密力扣之谜,最少操作使数组递增

本篇博客会讲解力扣“1827. 最少操作使数组递增”的解题思路,这是题目链接。 从前往后遍历数组,从下标为1的元素(第二个元素)开始,若该元素不超过前一个元素,则把该元素改成前一个元素加1后的值。把每个元素…

牛客网KY222 打印日期

KY222 打印日期 描述示例解题思路及代码 描述 给出年分m和一年中的第n天&#xff0c;算出第n天是几月几号。 输入描述&#xff1a; 输入包括两个整数y(1<y<3000)&#xff0c;n(1<n<366)。 输出描述&#xff1a; 可能有多组测试数据&#xff0c;对于每组数据&…

【2023年江西省研究生数学建模竞赛】题目二 国际“合作-冲突”的演化规律研究 建模方案及参考文献

代码与结果如下&#xff1a;完整文档见文末 相关思路请点击原文章查看 题目&#xff1a;国际“合作-冲突”的演化规律研究 国家之间的“合作-冲突”行为具有复杂性和多变性&#xff0c;对其决策模式的研究有着重要的意义。例如&#xff0c;对国际冲突和危机的准确预测可以帮…

SpringBoot:整合 Minio 文件上传操作

简介 对象存储服务OSS&#xff08;Object Storage Service&#xff09;是一种海量、安全、低成本、高可靠的云存储服务&#xff0c;适合存放任意类型的文件。容量和处理能力弹性扩展&#xff0c;多种存储类型供选择&#xff0c;全面优化存储成本&#xff0c;今天我这里主要讲解…

C++ 面向对象程序设计 14万字总结笔记

文章的索引都在目录处可以找到 学好C可以采取以下几个步骤&#xff1a; 掌握基本语法&#xff1a;C的语法对于初学者来说可能是一件比较难的事情&#xff0c;所以需要花时间掌握C的语言基础和语法规则&#xff0c;例如数据类型、流程控制、函数等。 学会面向对象编程(OOP)&a…

6.28 内存分配/管理 学习总结

一、通过程序验证系统内存分配机制 1、实验&#xff1a; 两个char 指针&#xff0c;连续先后在内存中各申请100、102个字节&#xff0c; 它们实际上会占用多少字节的内存空间&#xff1f; 如果两个char 指针&#xff0c;连续先后在内存中各申请200个字节&#xff0c; 它们实…

青大数据结构【2017】【综合应用、算法分析】

关键字&#xff1a; 平衡二叉树、平均查找长度、单链表、二叉树中序遍历非递归 三、综合应用 平衡二叉树AVL定义&#xff1a;任意节点的子树的高度差都小于等于 1 ASL&#xff08;12*24*3&#xff09;/717/7 四、算法分析