MySQL 作为主流的数据库,是各大厂面试官百问不厌的知识点,但是需要了解到什么程度呢?仅仅停留在 建库、创表、增删查改等基本操作的水平可不够。在面试后端开发的时候,一连几个问题,简直会被问到一脸懵逼。
MySQL 语句怎么优化?分库,分表都适合哪些场景?讲讲 InnoDB 如何使用 B+ 树存储的?
一般来说,准备 MySQL 面试 ,无非要从这几块进行准备:查询、存储、事务、锁和性能调优。不少朋友苦于搜集资料耗时耗力,很难 cover 住面试官的考核角度。为了能让大家在准备面试时少走弯路,这里特别熬夜快一周了,精心整理各大厂 MySQL 面试题的主流考点,经过多次迭代,最终形成了这份MySQL面试文档及学习笔记,从中你可以学到:
- 收获完整的 MySQL 学习路径
- 针对实际场景分析数据库问题,进行性能调优
- 吸收业界专家的经验分享,加速 MySQL 技能进阶
- 加深 MySQL 底层和核心技术的理解
- 轻松应对面试中 MySQL 问题
MySQL基础到高级到调优笔记
学习笔记主要分为12个模块,具体有:
。
由于篇幅字数原因,在这只展示详细目录及内容的截图了,有需要的朋友可以点击获取
有需要完整文档的朋友点击这里获取到文章中的文档...
MySQL重要性质
MySQL安装及Mysq|权限
MySQL数据类型
MySQL架构
存储引擎
锁
事务
业务设计
慢查询
索引与执行计划
SQL优化
由于篇幅字数原因,以上的MySQL学习笔记和MySQL面试解析108题文档已经整理成离线文档了, 有需要完整文档的朋友点击这里获取到文章中的文档...
MySQL面试解析108题文档
这份面试文档共5个模块,108道题解析分别有以下模块
MySQL基础模块
- 说一下 MySQL 执行一条查询语句的内部执行过程?
- MySQL 提示“不存在此列”是执行到哪个节点报出的?
- MySQL 查询缓存的功能有何优缺点?
- 如何关闭 MySQL 的查询缓存功能?
- MySQL 的常用引擎都有哪些?
- MySQL 可以针对表级别设置数据库引擎吗?怎么设置?
- 常用的存储引擎 InnoDB 和 MyISAM 有什么区别?
- InnoDB 有哪些特性?
- 一张自增表中有三条数据,删除了两条数据之后重启数据库,再新增一条数据,此时这条数据的 ID 是几?
- MySQL 中什么情况会导致自增主键不能连续?
- InnoDB 中自增主键能不能被持久化?
- …
MySQL索引模块
- 什么是索引?
- 索引分别有哪些优点和缺点?
- 以下 SQL 有什么问题?该如何优化?
- 为什么 MySQL 官方建议使用自增主键作为表的主键?
- 自增主键有哪些优缺点?
- 索引有几种类型?分别如何创建?
- 主索引和唯一索引有什么区别?
- 在 InnDB 中主键索引为什么比普通索引的查询性能高?
- 什么叫回表查询?
- 如何查询一张表的所有索引?
- MySQL 最多可以创建多少个索引列?
- 以下 like 查询会使用索引的是哪一个选项?为什么?
- 如何让 like %abc 走索引查询?
- …
MySQL事务模块
- 事务是什么?
- 事务有哪些特性?
- MySQL 中有几种事务隔离级别?分别是什么?
- 幻读和不可重复读的区别?
- 并发事务一般有哪些问题?
- 并发事务有什么什么问题?应该如何解决?
- 什么是 MVCC?
- MVCC 是怎么工作的?
- REPEATABLE READ(可重读)隔离级别下 MVCC 如何工作?
- MySQL 事务实现原理是什么?
- 如何设置 MySQL 的事务隔离级别?
- …
MySQL日志模块
- 什么是锁?MySQL 中提供了几类锁?
- 什么是死锁?
- 常见的死锁案例有哪些?
- 如何处理死锁?
- 如何查看死锁?
- 如何避免死锁?
- InnoDB 默认是如何对待死锁的?
- 如何开启死锁检测?
- 什么是全局锁?它的应用场景有哪些?
- 什么是共享锁?
- 什么是排它锁?
- 使用全局锁会导致什么问题?
- 如何处理逻辑备份时,整个数据库不能插入的情况?
- …
MySQL日志篇
MySQL性能优化模块
- 什么是慢查询?
- 如何开启慢查询日志?
- 如何定位慢查询?
- MySQL 的优化手段都有哪些?
- MySQL 常见读写分离方案有哪些?
- 介绍一下 Shar