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

这篇具有很好参考价值的文章主要介绍了mysql不同隔离级别事务插入数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

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

一、问题

问题是这样的,数据库默认隔离级别下,事务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;

查看结果如下
mysql不同隔离级别事务插入数据

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

mysql不同隔离级别事务插入数据
可以看到事务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';

mysql不同隔离级别事务插入数据
可以看到已经生效了。

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 查看结果

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

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

mysql不同隔离级别事务插入数据
可以看到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 查看结果

mysql不同隔离级别事务插入数据
可以看到已经都插入了,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 查看结果

mysql不同隔离级别事务插入数据
commit事务A后看结果
mysql不同隔离级别事务插入数据
可以看到一样是先开始事务的id先加一。

总结

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

到了这里,关于mysql不同隔离级别事务插入数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Spring/MySQL数据库系列】数据库事务的特点与隔离级别

    ⭐️ 前面的话 ⭐️ 本文已经收录到《Spring框架全家桶系列》专栏,本文将介绍有关数据库事务的特点以及隔离级别。 📒博客主页:未见花闻的博客主页 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 📌本文由 未见花闻 原创, CSDN 首发! 📆首发时间:🌴2023年5月20日🌴 ✉️坚

    2024年02月05日
    浏览(43)
  • elasticsearch的查询方式和mysql数据库事务隔离级别的思考

    目录 普通分页 解除查询限制 scroll查询 search_after 官方改进 轻量级试图(pit,Point in time) 总结 项目中用到了 elasticsearch,发现有几种查询方式不太一样,思考了一下,总结如下 等同于关系数据库的分页查询,例如 mysql 的 limit,如下 sql 这种查询方式有一个问题,需要查询

    2024年01月18日
    浏览(39)
  • 【MySQL】事务及其隔离性/隔离级别

    需要云服务器等云产品来学习Linux的同学可以移步/--腾讯云--/--阿里云--/--华为云--/官网,轻量型云服务器低至112元/年,新用户首次下单享超低折扣。   目录 一、事务的概念 1、事务的四种特性 2、事务的作用 3、存储引擎对事务的支持 4、事务的提交方式 二、事务的启动、回

    2024年02月12日
    浏览(37)
  • 详解MySQL事务隔离级别

    一个事务具有 ACID 特性,也就是(Atomicity、Consistency、Isolation、Durability,即 原子性 、 一致性 、 隔离性 、 持久性 ),本文主要讲解一下其中的 Isolation ,也就是事务的 隔离性 。 概述 四种隔离级别分别是: 读未提交(Read Uncommitted) :最低的隔离级别,事务对数据的修改即使

    2024年02月09日
    浏览(37)
  • MySQL的事务隔离级别

    目录 事务隔离级别的概念 脏读(Dirty Read): 不可重复读(Non-Repeatable Read): 幻读(Phantom Read): 读未提交(Read Uncommitted) 读未提交隔离级别的特点 示例 优势和劣势 读已提交(Read Committed) 读已提交隔离级别的特点 示例 优势和劣势 可重复读(Repeatable Read) 可重复读隔

    2024年02月09日
    浏览(41)
  • 【MYSQL】事务隔离级别

    脏读 一个事务正在对一条记录做修改,在这个事务完成并提交前,另一个事务也来读取同一条记录,读取了这些未提交的“脏”数据,并据此做进一步的处理,就会产生未提交的数据依赖关系。这种现象被形象的叫作’脏读’(Dirty Reads)。 例子:事务A修改了一条数据1状态

    2024年01月19日
    浏览(30)
  • Mysql 索引 、事务、隔离级别

    目录 索引(index) 1.为什么要有索引? 2.引入索引的代价 3.索引的操作 4.索引的使用场景 5.索引的底层原理 事务 (transaction) 事物的回滚是怎么做到的 事物的四大特性 并发执行事务带来的问题 隔离级别 索引是一种为了加快数据库查询(操作)速度而引入的一种手段,需要占用额

    2024年01月20日
    浏览(48)
  • 【MySQL】事务与隔离级别详解

    事务就是一组DML语句组成 ,这些语句在逻辑上存在相关性,这一组DML语句要么全部成功,要么全部失败,是一个整体(原子性)。例如买票操作,上层看来是一个单纯的买票操作,但是下层却需要一条或多条SQL语句来完成转账操作,这一组SQL是一个整体,被称为事务。事务还

    2024年02月15日
    浏览(34)
  • MySQL的事务特性、事务特性保证和事务隔离级别

            事务是指要么所有的操作都成功执行,要么所有的操作都不执行的一组数据库操作。 一、MySQL提供了四个事务特性,即ACID:          1. 原子性(Atomicity) :一个事务中的所有操作要么全部提交成功,要么全部回滚失败,保证事务的原子性。          2. 一

    2024年02月03日
    浏览(31)
  • 【MySql】MySql事务隔离级别与一致性

    MySQL服务可能会同时被多个客户端进程(线程)访问,访问的方式以事务方式进行 一个事务可能由多条SQL构成,也就意味着,任何一个事务,都有执行前,执行中,执行后的阶段。而所谓的原子性,其实就是让用户层,要么看到执行前,要么看到执行后。执行中出现问题,可以

    2024年02月10日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包