MySQL 篇
第 1 题(事务)
题目:
MySQL 的事务四大特性(ACID) 是什么?请逐一解释。
另外追问:MySQL 的 隔离级别 有哪些?分别解决了什么问题(脏读、不可重复读、幻读)?InnoDB 默认的隔离级别是什么?
答:
四大隔离级别:
- 原子性——事务中的操作要么都执行,要么都不执行
- 一致性——事务执行前后,不破坏约束(主键、外键等)
- 持久性——事务一旦提交,数据不会丢失
- 隔离性——并发执行的事务之间相互隔离
隔离级别:
- 读未提交
- 读已提交——解决脏读
- 可重复读——解决不可重复读
- 串行化——解决幻读
InnoDB默认隔离级别:
可重复读
第 2 题(MySQL 锁)
题目:
InnoDB 的行锁有几种类型?间隙锁(Gap Lock) 和 临键锁(Next-Key Lock)
是什么?它们分别在什么隔离级别下生效?主要解决了什么问题?
答:
行锁有如下类型:
- 记录锁
- 间隙锁
- 临键锁(记录锁+间隙锁)
间隙锁,对涉及到的数据的相关范围进行加锁
临建锁,记录锁和间隙锁的结合,同样对范围加锁,但是可以像记录锁那样把具体的某一行数据也包括进来
记录锁在读已提交和可重复读生效,解决了脏读的问题
间隙锁和临键锁在可重复读生效,解决了不可重复读的问题
原创
数据库基础学习——MySql
本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
评论交流
欢迎留下你的想法