数据库 
首页 > 数据库 > 浏览文章

聊聊MySQL事务的特性和隔离级别

(编辑:jimmy 日期: 2025/2/25 浏览:3 次 )

网上对于此类的文章已经十分饱和了,那还写的原因很简单——作为自己的理解笔记。

前言

"_blank" href="https://www.jb51.net/books/112116.html">高性能MySQL》第三版中其对事务的描述是这样的:

事务就是一组原子性的SQL查询,或者说一个独立的工作单元。如果数据库引擎能够成功地对数据库应用该组查询的全部语句,那么就执行该组查询。如果其中有任何一条语句因为崩溃或其他原因无法执行,那么所有的语句都不会执行。

"text-align: center">聊聊MySQL事务的特性和隔离级别

"text-align: center">聊聊MySQL事务的特性和隔离级别

"text-align: center">聊聊MySQL事务的特性和隔离级别

"text-align: center">聊聊MySQL事务的特性和隔离级别

上图演示的是事务读时,其他事务不可写,下图是写时不可操作。

聊聊MySQL事务的特性和隔离级别

3 三个问题—脏读、不可重复读、幻读。

​​  这是采取事务的不同隔离级别可能产生的几个问题,在上面隔离级别已经提及到了,但是为了避免混淆还是单独拿出来。

  • 脏读:指在一个事务中读到了其他事务还没提交的脏数据,发生在读未提交级别。
  • 不可重复读:在一个事务中同样的查询可能出现不同的结果,发生在读未提交、读提交级别。(个人觉得没必要特意去理解为叫什么叫不可重复,容易混淆)
  • 幻读:在一个事务中进行写操作的时候修改的数量跟预期的数量不同,例如修改到了之前查询不出来的数据。

​​  再啰嗦一些不可重复读和幻读的区别:可以理解为不可重复读是那条记录的字段值改变了,例如id为1的记录中name的两次值都不同;而幻读则是数量上的不同,例如我查询的时候共有2条记录,但是执行修改操作的时候却更新了3条。

以上就是聊聊MySQL事务的特性和隔离级别的详细内容,更多关于MySQL 事务特性和隔离级别的资料请关注其它相关文章!

上一篇:如何修改MySQL字符集
下一篇:MySQL GROUP_CONCAT限制解决方案
一句话新闻
一文看懂荣耀MagicBook Pro 16
荣耀猎人回归!七大亮点看懂不只是轻薄本,更是游戏本的MagicBook Pro 16.
人们对于笔记本电脑有一个固有印象:要么轻薄但性能一般,要么性能强劲但笨重臃肿。然而,今年荣耀新推出的MagicBook Pro 16刷新了人们的认知——发布会上,荣耀宣布猎人游戏本正式回归,称其继承了荣耀 HUNTER 基因,并自信地为其打出“轻薄本,更是游戏本”的口号。
众所周知,寻求轻薄本的用户普遍更看重便携性、外观造型、静谧性和打字办公等用机体验,而寻求游戏本的用户则普遍更看重硬件配置、性能释放等硬核指标。把两个看似难以相干的产品融合到一起,我们不禁对它产生了强烈的好奇:作为代表荣耀猎人游戏本的跨界新物种,它究竟做了哪些平衡以兼顾不同人群的各类需求呢?