MySQL进阶45讲【3】事务隔离的恩恩怨怨 蔚落 2024-05-07 22:29 98阅读 0赞 ## 1 前言 ## 提到事务,大家肯定不陌生,和数据库打交道的时候,我们总是会用到事务。最经典的例子就是转账,张三要给朋友小王转100块钱,而此时张三的银行卡只有100块钱。 转账过程具体到程序里会有一系列的操作,比如查询余额、做加减法、更新余额等,这些操作必须保证是一体的,不然等程序查完之后,还没做减法之前,张三这100块钱,完全可以借着这个时间差再查一次,然后再给另外一个朋友转账,如果银行这么整,不就乱了么?这时就要用到“事务”这个概念了。 简单来说,事务就是要保证一组数据库操作,要么全部成功,要么全部失败。在MySQL中,事务支持是在引擎层实现的。我们现在知道,MySQL是一个支持多引擎的系统,但并不是所有的引擎都支持事务。比如MySQL原生的MyISAM引擎就不支持事务,这也是MyISAM被InnoDB取代的重要原因之一。 今天的文章里,将会以InnoDB为例,剖析MySQL在事务支持方面的特定实现,并基于原理给出相应的实践建议,希望这些案例能加深大家对MySQL事务原理的理解。 ## 2 隔离性与隔离级别 ## 提到事务,大家肯定会想到**ACID(Atomicity、Consistency、Isolation、Durability,即原子性、一致性、隔离性、持久性)**,今天我们就来说说其中**I**,也就是“隔离性”。 当数据库上有多个事务同时执行的时候,就可能出现脏读(dirty read)、不可重复读(non-repeatable r
相关 MySQL进阶45讲【15】“order by“是怎么工作的? MySQL进阶45讲【15】"order by"是怎么工作的? 柔情只为你懂/ 2024年05月07日 22:32/ 0 赞/ 90 阅读
相关 MySQL进阶45讲【8】MySQL事务到底是隔离的还是不隔离的? MySQL进阶45讲【8】MySQL事务到底是隔离的还是不隔离的? 喜欢ヅ旅行/ 2024年05月07日 22:30/ 0 赞/ 125 阅读
相关 Mysql实战45讲---08 事务到底是隔离的还是不隔离的? 08 事务到底是隔离的还是不隔离的? 我在第 3 篇文章和你讲事务隔离级别的时候提到过,如果是可重复读隔离级别,事务 T 启动的时候会创建一个视图 read-view,之 系统管理员/ 2023年09月27日 09:01/ 0 赞/ 108 阅读
还没有评论,来说两句吧...