数据库 (MySQL) 面试题库
这里记录了关系型数据库(主要针对 MySQL)的核心面试题:
索引与底层结构
- 为什么 MySQL 索引底层使用的是 B+ 树,而不是 B 树或红黑树?
- 什么是聚簇索引(主键索引)和非聚簇索引(二级索引)?
- 什么是回表?什么是覆盖索引?
- 什么是索引下推(ICP)?
- 什么是联合索引?最左前缀匹配原则是什么?
- 哪些情况下索引会失效?
事务与并发控制
- 事务的四大特性(ACID)分别是什么?底层是如何保证的?
- 数据库的并发异常有哪些(脏读、不可重复读、幻读)?
- MySQL 的四种隔离级别是什么?分别解决了什么问题?
- 什么是 MVCC(多版本并发控制)?它的底层实现原理(Read View、Undo Log)?
- MySQL 是如何解决幻读问题的?
锁机制
- MySQL 有哪些锁(全局锁、表级锁、行级锁)?
- 什么是共享锁(S锁)和排他锁(X锁)?
- 什么是记录锁(Record Lock)、间隙锁(Gap Lock)和临键锁(Next-Key Lock)?
- 什么是死锁?MySQL 是如何处理死锁的?
日志与架构
- MySQL 的体系架构是怎样的(Server层与存储引擎层)?
- InnoDB 和 MyISAM 存储引擎的区别?
-
binlog、redo log和undo log的作用分别是什么? - 什么是两阶段提交?
- 什么是 WAL(Write-Ahead Logging)技术?
优化与高可用
- 如何使用
EXPLAIN分析 SQL 的执行计划? - 慢查询日志如何排查和优化?
- 什么是深分页问题(Limit 1000000, 10)?如何优化?
- MySQL 主从复制的原理是什么?
- 什么是分库分表?有哪些常见的分片算法?