MySQL简历话术
本专栏只总结最重要的八股,简历对应的
简历话术:
熟悉MySQL基础(索引、事务、存储引擎、MVCC、日志、主从同步)及MyBatis ORM框架整合,具备一定的SQL调优能力。
1. 索引
1.1 分类
| 分类维度 | 索引类型 | 核心特点 | 适用场景 |
|---|---|---|---|
| 数据结构 | B+Tree 索引 | 支持等值、范围查询和排序 | 是MySQL默认索引结构。B+数据放在叶子节点,可以腾出空间让分支节点组织更宽的树,减少磁盘IO次数。叶子节点双向链表,所有数据都维护在叶子节点–对范围查询和排序性能更好 |
| Hash 索引 | 查询速度极快,但仅支持等值查询 | 等值查询,如缓存表、键值对数据 | |
| 字段特性 | 主键索引 | 唯一且非空,聚簇索引 | 表的唯一标识,常用作聚簇索引 |
| 唯一索引 | 确保列值的唯一性,允许一个NULL | 保证数据唯一性,如身份证号、邮箱等 | |
| 普通索引 | 最基本的索引,无任何限制 | 加速常规查询 | |
| 前缀索引 | 只索引列值的前缀,节省空间 | 索引长字符串列(如VARCHAR(255)) |
|
| 字段个数 | 单列索引 | 只包含一个列 | 针对单个列的查询条件 |
| 联合索引 | 包含多个列,遵循最左前缀原则 | 针对多个列的复杂查询条件 | |
| 物理存储 | 聚簇索引 | 叶子节点存储完整数据行 | InnoDB表的主键,决定数据物理顺序 |
| 二级索引 | 叶子节点存储索引列和主键值 | 除主键查询外的所有查询 |
1.2索引设计原则
1.2.1 控制数量
控制索引数量, 索引不是越多越好, 太多了占空间, 维护索引需要的代价也越多, 增删改反而会比较慢.
1.2.2 对谁建立索引?
查询频繁的列建立索引,选择区分度高的列做索引,对于经常where, order by, group by的列建立索引
1.2.3 覆盖索引,避免回表
1.3 索引使用原则(索引失效场景)
-
不能用 最左前缀匹配原则;索引列运算/函数会使索引失效; LIKE 查询,前导通配符(LIKE '%abc')会导致索引失效;索引列发生了隐式类型转换(如字符串字段传了数字)
-
不想用 在WHERE子句中,OR 连接的条件里,只要有任意一边 没有索引 → 整个 WHERE 索引失效,全表扫描。id 可以用索引快速找,name 没有索引,必须全表扫,既然 name 必须全表扫,那 MySQL 心想: 反正都要全表扫一遍了,我直接全表扫,同时判断两个条件,比 “索引扫 + 全表扫” 更快。
2. 事务
2.1 事务隔离级别
链接事务隔离级别详解 有脏读、不可重复读、幻读这三种并发问题。 数据库用读未提交、读已提交、可重复读、串行化 这四种级别来解决它们。MySQL默认是可重复读。
2.2 事务四大特性
事务:一组 SQL 语句的执行单元,要么全部成功,要么全部失败。
-
原子性(Atomicity)
事务是不可分割的最小工作单元。事务中的操作序列,若任意一步失败,则已执行的操作全部回滚,如同整个事务从未发生。
实现机制:通过undo log(回滚日志)将数据恢复到事务开始前的状态。 -
一致性(Consistency)
事务执行前后,数据库从一种一致状态转变为另一种一致状态,数据的完整性约束未被破坏。例如转账业务中,无论事务成功与否,转出方与转入方的账户总额保持不变。
注:只要保证了原子性、隔离性、持久性,一致性自然得以实现。 -
持久性(Durability)
一旦事务提交,其对数据库的修改就是永久性的,即使随后发生系统故障也不会丢失。
实现机制:通过redo log(重做日志)在系统重启后恢复已提交的事务修改。 -
隔离性(Isolation)
多个用户并发访问数据库时,数据库为每个事务开启独立的数据操作空间,一个事务的执行不被其他并发事务干扰。各事务之间相互隔离,如同串行执行。
实现机制:MVCC+undo log解决读写冲突,锁解决写写
3. 存储引擎
- InnoDB(MySQL默认引擎):支持事务、外键、行级锁、MVCC,适合高一致性场景。
- MyISAM:表级锁,无事务/外键,适合只读或低并发写入。
- Memory:内存存储,极快但易失,曾被用作缓存,现多由Redis替代。
4.MVCC
链接 提高读写并发
5.日志
undo log(回滚日志):事务回滚和 MVCC, 事务中的原子性 redo log(重做日志):崩溃恢复, 提高写入速度,事务中的持久性 binlog (归档日志/二进制日志):主要用于数据备份和主从复制;
6. 主从同步
主库写binlog,从库:I/O线程 → 接收Binlog并写入Relay Log SQL线程 → 读取Relay Log并重放SQL语句
优点: 高可用性 - 主库故障时可快速切换到从库 读写分离 - 主库负责写操作,从库承担读请求,提升并发能力 数据备份 - 从库可作为实时备份,不影响主库性能
缺点: 从库的数据总是最终一致性,而非实时一致。
7.SQL调优
#简历#针对面试,整理简历上写的每行技术点+对应完整话术和扩展点,快速速成
查看4道真题和解析