您好,登录后才能下订单哦!
# 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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。