搞懂MySQL事务隔离级别、AICD、CAP、BASE原则,这篇就够了?

2026-05-21 10:234阅读0评论运维
  • 内容介绍
  • 文章标签
  • 相关推荐

谁能想到七年前被外资面试官整得脑子嗡嗡响的"AICD""BASE"这些个洋文缩写,如今居然成了职场人聊数据库必提的"通关密码"?!当初第一次听见这几个词,我还以为是啥高端化妆品品牌呢,后来啊人家扭头就问"张三给李四转100块,咋保证俩人账户不会一个少100一个没多?",当时我脸烫得能煎蛋,现在想想简直想给自己两耳光——早知道好好学这些基础玩意儿!

一、先唠唠事务:到底是个啥"神秘组织"

MySQL进阶突击系列(04)事务隔离级别、AICD、CAP、BASE原则一直搞不懂? | 看这篇就够了

咱先把最基础的事儿掰扯清楚:啥叫事务?大白话就是"要么一起成功,要么一起玩完"的一组操作团伙!就像你去奶茶店点杯珍珠奶茶加芋圆:店员下料、放珍珠、加芋圆,这俩步骤必须都完成才算做好一杯奶茶—— 我整个人都不好了。 要是芋圆没放就给你端走,那你肯定骂街对吧?数据库里的事务也一样:张三转李四100块,"张三账户减100"和"李四账户加100"必须绑在一起,要么俩都成,要么俩都不算——不然财务报表分分钟乱套!

客观地说... 不过呢,光知道"一起成功失败"还不够,面试官要是再追一句"那MySQL靠啥保住这承诺?",你就得掏出压箱底儿的"AICD四大神功"了!

二、AICD?哦不!是ACID!酸溜溜但有用の四大特性

别笑,AICD其实是笔误,正宗全称是**ACID**:原子性、一致性、隔离性、持久性——四个单词首字母凑一块儿,谐音"酸",听着就提神!

2.1 原子性:要么all in要么all out

研究研究。 原子性这个词儿看着高冷,其实特接地气——就像你吃干脆面,"啪"一声捏碎袋子倒出来所有料包才能吃,要是只倒一半调料就开吃,那味儿肯定不对!放到数据库里就是:事务里不管有多少个操作,只要其中一个环节崩了,整个事务直接"一键撤回",所有操作全部失效——就跟没发生过一样!

那MySQL靠啥实现原子性呢?偷偷告诉你:它藏了本"后悔药日记"叫**undoLog**!不管你事务里改了多少数据,undoLog都会偷偷备份一份修改前的数据——要是出事儿要回滚?照着日记原样恢复就行!当年我手贱删库跑 要我说... 路就是靠undoLog找回来的数据,别提多感激它了!2.2 隔离性:你的事务别瞎瞅别人の "私房钱"隔离性说白了就是"各人自扫门前雪",一个事务改的数据别让别的事务随便看见——特别是那种还没定稿的数据!不然准出幺蛾子!

谁能想到七年前被外资面试官整得脑子嗡嗡响的"AICD""BASE"这些个洋文缩写,如今居然成了职场人聊数据库必提的"通关密码"?!当初第一次听见这几个词,我还以为是啥高端化妆品品牌呢,后来啊人家扭头就问"张三给李四转100块,咋保证俩人账户不会一个少100一个没多?",当时我脸烫得能煎蛋,现在想想简直想给自己两耳光——早知道好好学这些基础玩意儿!

一、先唠唠事务:到底是个啥"神秘组织"

MySQL进阶突击系列(04)事务隔离级别、AICD、CAP、BASE原则一直搞不懂? | 看这篇就够了

咱先把最基础的事儿掰扯清楚:啥叫事务?大白话就是"要么一起成功,要么一起玩完"的一组操作团伙!就像你去奶茶店点杯珍珠奶茶加芋圆:店员下料、放珍珠、加芋圆,这俩步骤必须都完成才算做好一杯奶茶—— 我整个人都不好了。 要是芋圆没放就给你端走,那你肯定骂街对吧?数据库里的事务也一样:张三转李四100块,"张三账户减100"和"李四账户加100"必须绑在一起,要么俩都成,要么俩都不算——不然财务报表分分钟乱套!

客观地说... 不过呢,光知道"一起成功失败"还不够,面试官要是再追一句"那MySQL靠啥保住这承诺?",你就得掏出压箱底儿的"AICD四大神功"了!

二、AICD?哦不!是ACID!酸溜溜但有用の四大特性

别笑,AICD其实是笔误,正宗全称是**ACID**:原子性、一致性、隔离性、持久性——四个单词首字母凑一块儿,谐音"酸",听着就提神!

2.1 原子性:要么all in要么all out

研究研究。 原子性这个词儿看着高冷,其实特接地气——就像你吃干脆面,"啪"一声捏碎袋子倒出来所有料包才能吃,要是只倒一半调料就开吃,那味儿肯定不对!放到数据库里就是:事务里不管有多少个操作,只要其中一个环节崩了,整个事务直接"一键撤回",所有操作全部失效——就跟没发生过一样!

那MySQL靠啥实现原子性呢?偷偷告诉你:它藏了本"后悔药日记"叫**undoLog**!不管你事务里改了多少数据,undoLog都会偷偷备份一份修改前的数据——要是出事儿要回滚?照着日记原样恢复就行!当年我手贱删库跑 要我说... 路就是靠undoLog找回来的数据,别提多感激它了!2.2 隔离性:你的事务别瞎瞅别人の "私房钱"隔离性说白了就是"各人自扫门前雪",一个事务改的数据别让别的事务随便看见——特别是那种还没定稿的数据!不然准出幺蛾子!