本文为【Mysql事务八股文合集】初版,后续还会进行优化更新,欢迎大家关注交流~
hello hello~ ,这里是绝命Coding——老白~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹
💥个人主页:绝命Coding-优快云博客
💥 所属专栏:后端技术分享
这里将会不定期更新有关后端、前端的内容,希望大家多多点赞关注收藏💖
大家第一眼看到这个标题,不知道心中是否有答案了?在面试当中,面试官经常对项目亮点进行深挖,来考察你对这个项目亮点的理解以及思考!这个时候,你如果可以回答出面试官的问题,甚至是主动说出自己的思考,那在面试中是大大加分的~
什么是事务?
事务是逻辑的一组操作,要么都执行,要么都不执行
# 开启一个事务
START TRANSACTION;
# 多条 SQL 语句
SQL1,SQL2...
## 提交事务
COMMIT;
请你描述下事务的特性?
(ACID)
(一原吃哥)
原子性A 最小的执行单位,不允许分割 要么全部完成,要么完全不起作用
一致性C 前后,数据库从一个一致性状态转换到另一个一致性
隔离性I 并发 不被其他事务所干扰 事务独立
持久性D 提交后 改变是持久
怎么实现
原子性(redo 和 undo 日志)
在执行事务期间,将修改的数据写入 redo 日志,并在事务提交前将其持久化到磁盘,确保事务的持久性。如果事务发生故障或回滚操作,可以使用 undo 日志来撤销事务的修改,使数据回滚到事务开始之前的状态。
隔离性(锁机制和多版本并发控制)
持久性(redo 日志)
innodb的默认隔离级别以及使用的技术
默认隔离级别是可重复读RR,但是用到了MVCC的快照读和当前读技术以及next-key锁,所以可以解决幻读问题。对标SQL标准的可串行化。
对事务隔离级别的理解
(未提交读,提交读,可重复读,串行化)
READ_UNCOMMITTED(未提交读)
最低的隔离级别,允许读取尚未提交的数据变更,可能会导致脏读、幻读或不可以重复读
解决了更新丢失,但还是可能会出现脏读
READ_COMMITTED(提交读)
允许