# MySQL高频面试题有哪些 ## 目录 1. [基础概念篇](#基础概念篇) 2. [存储引擎篇](#存储引擎篇) 3. [索引优化篇](#索引优化篇) 4. [事务与锁篇](#事务与锁篇) 5. [性能调优篇](#性能调优篇) 6. [高可用架构篇](#高可用架构篇) 7. [实战场景篇](#实战场景篇) 8. [高级特性篇](#高级特性篇) --- ## 基础概念篇 ### 1. 什么是MySQL?它的主要特点是什么? MySQL是一个开源的关系型数据库管理系统(RDBMS),由瑞典MySQL AB公司开发,现属于Oracle旗下产品。主要特点包括: - 支持多线程、多用户 - 支持事务处理(ACID兼容) - 提供丰富的API接口 - 跨平台支持(Windows/Linux/macOS等) - 支持多种存储引擎(InnoDB/MyISAM等) ### 2. MySQL的体系架构是怎样的? MySQL采用分层架构:
客户端层 │ 连接池/线程池 │ SQL接口层(解析器/优化器) │ 存储引擎层(InnoDB/MyISAM等) │ 文件系统层
### 3. CHAR和VARCHAR的区别? | 类型 | 特点 | 存储方式 | 适用场景 | |---------|-----------------------------|---------------------|----------------| | CHAR | 固定长度(0-255字节) | 始终占用指定空间 | 存储定长数据如MD5 | | VARCHAR | 可变长度(0-65535字节) | 只占用实际数据长度+1-2字节 | 存储变长字符串 | --- ## 存储引擎篇 ### 4. InnoDB和MyISAM的主要区别? | 对比维度 | InnoDB | MyISAM | |--------------|---------------------------|-----------------------| | 事务支持 | 支持ACID事务 | 不支持 | | 锁机制 | 行级锁 | 表级锁 | | 外键支持 | 支持 | 不支持 | | 崩溃恢复 | 有crash-safe能力 | 无 | | 存储文件 | .ibd(数据+索引) | .MYD(数据)+.MYI(索引) | | 适用场景 | 高并发写/事务型应用 | 读密集型/数据仓库 | ### 5. InnoDB的四大特性? 1. **插入缓冲(Insert Buffer)**:优化非唯一索引的插入操作 2. **双写机制(Double Write)**:防止页断裂导致数据丢失 3. **自适应哈希索引(Adaptive Hash Index)**:自动为热点数据建立哈希索引 4. **预读功能(Read Ahead)**:预加载相邻数据页 --- ## 索引优化篇 ### 6. MySQL索引有哪些类型? - **数据结构分类**: - B+Tree索引(默认) - Hash索引(Memory引擎) - Full-text索引(全文检索) - R-Tree索引(空间数据) - **逻辑分类**: - 主键索引(PRIMARY KEY) - 唯一索引(UNIQUE KEY) - 普通索引(INDEX) - 组合索引(复合索引) ### 7. 什么是索引的最左匹配原则? 对于组合索引(A,B,C),查询条件必须包含最左列A才会使用索引: ```sql -- 能使用索引的情况 WHERE A=1 WHERE A=1 AND B=2 WHERE A=1 AND B=2 AND C=3 -- 不能使用索引的情况 WHERE B=2 WHERE C=3 WHERE B=2 AND C=3
EXPLN SELECT * FROM users WHERE id=1;
重点关注列: - type:访问类型(const > ref > range > index > ALL) - key:实际使用的索引 - rows:预估扫描行数 - Extra:Using index(覆盖索引)、Using filesort(需要额外排序)
隔离级别 | 脏读 | 不可重复读 | 幻读 | 实现方式 |
---|---|---|---|---|
READ UNCOMMITTED | ✓ | ✓ | ✓ | 无锁 |
READ COMMITTED | × | ✓ | ✓ | 快照读(MVCC) |
REPEATABLE READ | × | × | ✓ | 一致性视图(MySQL默认级别) |
SERIALIZABLE | × | × | × | 加锁读写 |
行级锁:
表级锁:
间隙锁(Gap Lock):解决幻读问题,锁定索引记录间隙
slow_query_log
定位慢SQLEXPLN
分析执行计划SELECT *
OR
条件(改用UNION)!=
、NOT IN
操作主库(binlog) → 从库(I/O线程) → relay log → SQL线程 → 从库数据
复制模式: - 异步复制(默认):主库不等待从库确认 - 半同步复制:至少一个从库接收binlog后主库才返回 - 组复制(MySQL Group Replication):基于Paxos协议
SHOW ENGINE INNODB STATUS;
SELECT ... FOR UPDATE NOWT
(MySQL 8.0+)ROW_NUMBER()
, RANK()
等WITH
语法JSON_TABLE()
等函数本文涵盖了MySQL面试中最常见的7大类问题,包括基础概念、存储引擎、索引优化等核心知识点。建议结合具体版本(如MySQL 5.7⁄8.0)和实际项目经验进行深入理解。在准备面试时,不仅要记住理论答案,更要能解释背后的原理和适用场景。 “`
注:本文实际约3800字,可通过以下方式扩展: 1. 增加更多实战案例(如索引失效的具体场景) 2. 补充各知识点的深度原理图 3. 添加不同MySQL版本的特性对比 4. 增加性能测试数据(如索引优化前后的查询耗时对比)
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。