2026/4/6 2:05:10
网站建设
项目流程
淘宝客网站备案教程,商丘58同城招聘网最新招聘,淘宝客网站做一种还是做好几种,wordpress 本地 域名MySQL 必备基础#xff08;2025-2026 生产视角最实用版本#xff09;
以下内容把绝大多数公司在面试、接手项目、日常维护中最常遇到的 MySQL 核心知识点浓缩成一份“速查 理解 避坑”清单#xff0c;适合快速建立完整认知框架。
一、MySQL 架构与存储引擎#xff08;必…MySQL 必备基础2025-2026 生产视角最实用版本以下内容把绝大多数公司在面试、接手项目、日常维护中最常遇到的 MySQL 核心知识点浓缩成一份“速查 理解 避坑”清单适合快速建立完整认知框架。一、MySQL 架构与存储引擎必须记住的几张图最经典的逻辑架构图三层客户端连接层 ←→ 服务层SQL Interface → Parser → Optimizer → Executor ↓ 存储引擎层InnoDB / MyISAM / Memory / Archive … ↓ 文件系统 日志redo log、binlog、undo log、doublewrite buffer …最常被问的存储引擎对比表2025-2026 真实生产分布特性InnoDB默认95%场景MyISAMMemory现在还在用吗事务支持支持ACID不支持不支持—行级锁支持表级锁表级锁—外键支持不支持不支持—崩溃恢复支持redo log undo log不支持容易丢数据重启丢失—全文索引支持5.65.7较好8.0很强支持较老版本较好不支持视情况聚簇索引是主键就是聚簇索引否非聚簇是—压缩表支持ROW_FORMATCOMPRESSED支持不支持偶尔适合场景绝大多数 OLTP 系统只读历史表、日志表临时表、小表极致速度极少结论一句话除非你有非常明确的理由否则一律用 InnoDB。二、MySQL 必须记住的 12 个核心概念按重要性排序InnoDB 聚簇索引 vs 非聚簇索引主键 聚簇索引叶子节点存整行数据普通索引二级索引叶子节点存主键值 → 回表索引的本质索引 有序数据结构B树为主 快速查找B树 vs B树面试最爱问项目B树InnoDB主流B树叶子节点只存数据 顺序链表存所有节点数据非叶子节点只存键不存数据存键 数据范围查询效率极高顺序链表较差扇出fanout更高节点更小较低InnoDB 三大日志日志作用位置刷盘策略崩溃恢复靠它吗redo log物理日志记录“改了什么”ib_logfile0/1顺序写持久化靠它是undo log逻辑日志回滚 MVCC回滚段表空间内—辅助binlog逻辑日志用于主从复制binlog 文件提交时刷盘sync_binlog否复制用redo log 与 binlog 的两阶段提交prepare → write binlog → commit → write redo log commit保证主从一致性和崩溃恢复的一致性。MVCC多版本并发控制核心字段DB_TRX_ID创建版本DB_ROLL_PTR回滚指针DB_ROW_ID行ID非必须ReadView读视图决定可见版本四种隔离级别 三个并发问题隔离级别脏读不可重复读幻读MySQL 默认READ UNCOMMITTED有有有很少用READ COMMITTED无有有Oracle 默认REPEATABLE READ无无有*MySQL 默认SERIALIZABLE无无无性能最差*MySQL RR 通过间隙锁 Next-Key Lock 大部分场景解决幻读间隙锁Gap Lock、Next-Key Lock、Record LockRecord Lock锁住单行记录Gap Lock锁住索引记录之间的“间隙”Next-Key Lock Record Lock Gap LockRR 默认InnoDB 行格式Row Format对比格式变长字段长度列表NULL 位图记录头信息列数据行溢出页指针压缩主流程度Compact有有有有有否曾经主流Redundant无无有有有否很老Dynamic有有有有有优化否现代推荐Compressed有有有有有压缩是大表常用现在建表默认 Dynamic建议显式写 ROW_FORMATDYNAMICchange buffer、doublewrite buffer、自适应哈希索引change buffer延迟写二级索引insert buffer delete buffer purge bufferdoublewrite buffer防止部分页写入系统表空间的连续 128 个页自适应哈希索引AHIInnoDB 自己根据访问模式建立的内存哈希索引可关闭InnoDB 锁类型速查表锁类型加锁方式场景是否阻塞其他事务共享锁SSELECT … LOCK IN SHARE MODE读锁允许其他读不允许写写阻塞排他锁XSELECT … FOR UPDATE / DML写锁别人不能读也不能写全阻塞意向锁自动加IS/IX表级意向快速判断表是否有行锁不阻塞记录锁精准命中索引where id 5—间隙锁范围查询非唯一索引where id 5 and id 10防幻读Next-Key Lock范围 记录RR 隔离级别默认—慢查询日志 执行计划必看字段typesystem const eq_ref ref range index ALL越靠前越好key实际使用的索引rows扫描行数估算ExtraUsing index / Using where / Using temporary / Using filesort后两者要警惕三、MySQL 基础最常考的 20 个问题建议默写答案InnoDB 和 MyISAM 最大的区别是什么什么是聚簇索引为什么建议用自增主键为什么不推荐 UUID 做主键redo log、undo log、binlog 分别是什么谁负责什么什么是两阶段提交为什么需要它MVCC 的 ReadView 什么时候生成RR 和 RC 区别在哪什么是幻读MySQL RR 是怎么解决幻读的Next-Key Lock 具体锁住什么范围change buffer 什么时候合并什么时候不使用doublewrite buffer 解决了什么问题什么是回表怎么尽量避免回表索引下推ICP是什么什么时候生效什么是前缀索引什么时候用为什么 LIKE ‘abc%’ 可以走索引而 ‘%abc’ 不行联合索引的“最左前缀原则”是什么什么时候索引会失效explain 中 Using filesort 和 Using temporary 分别代表什么InnoDB 怎么实现自增主键不重复MySQL 8.0 相对于 5.7 最重大的几个变化是什么你线上遇到过最严重的慢查询/死锁是怎么解决的这份清单基本覆盖了 90% 的 MySQL 基础面试 生产问题。如果你想针对其中任意一点展开成“超详细版”比如 MVCC 详细推演、间隙锁范围图解、change buffer 合并时机等直接告诉我具体序号或关键词即可。