
书: https://pan.baidu.com/s/1hMg-9fMkkzntAfHoLymQMA?pwd=2tx9
笔记如下:
- MySQL架构:MySQL采用分层架构,包括连接层、服务层、存储引擎层(InnoDB、MyISAM等)和文件系统层。
- InnoDB核心特性:支持事务(ACID)、行级锁、MVCC(多版本并发控制)、外键约束和崩溃恢复。
- 索引优化:B+树索引是MySQL主要索引结构,合理使用主键索引、唯一索引、复合索引提升查询性能。
- SQL执行流程:解析SQL→优化器生成执行计划→执行引擎调用存储引擎获取数据→返回结果。
- 事务隔离级别:
- READ UNCOMMITTED(读未提交)
- READ COMMITTED(读已提交)
- REPEATABLE READ(可重复读,MySQL默认)
- SERIALIZABLE(串行化)
- 锁机制:
- 行锁(共享锁S、排他锁X)
- 表锁(意向共享锁IS、意向排他锁IX)
- 间隙锁(防止幻读)
- MVCC实现原理:通过undo日志版本链和ReadView实现非锁定读,提高并发性能。
- 慢查询优化:使用
EXPLAIN
分析执行计划,关注type
(访问类型)、key
(使用索引)、rows
(扫描行数)。 - 分库分表策略:
- 水平分表(按数据行拆分)
- 垂直分表(按字段拆分)
- 分库(按业务拆分)
- 主从复制原理:基于binlog(二进制日志)实现,主库写binlog,从库通过I/O线程拉取并重放。
- 高可用方案:
- MHA(Master High Availability)
- InnoDB Cluster(基于Group Replication)
- 备份与恢复:
- 逻辑备份(
mysqldump
) - 物理备份(XtraBackup)
- 逻辑备份(
- 性能调优:
- 调整
innodb_buffer_pool_size
(缓存池大小) - 优化
join_buffer_size
、sort_buffer_size
- 调整
- SQL优化技巧:
- 避免
SELECT *
- 使用覆盖索引
- 减少子查询
- 避免
- Explain详解:
type
:从优到差依次为system
>const
>eq_ref
>ref
>range
>index
>ALL
Extra
:关注Using filesort
、Using temporary
等警告
- 字符集与排序规则:
- 推荐使用
utf8mb4
(支持emoji) - 排序规则如
utf8mb4_general_ci
(不区分大小写)
- 推荐使用
- 连接池配置:
- 合理设置
max_connections
- 使用连接池(如HikariCP、Druid)
- 合理设置
- 死锁处理:通过
SHOW ENGINE INNODB STATUS
查看死锁日志,优化事务加锁顺序。 - 分区表应用:按范围(RANGE)、列表(LIST)、哈希(HASH)等方式分区,提升大表查询效率。
- 监控工具:
SHOW STATUS
查看运行状态Performance Schema
监控性能指标- Prometheus + Grafana可视化监控