
书: https://pan.baidu.com/s/1LWWovU7IScpiddLrDhjl1w?pwd=pc5n
笔记如下:
- MySQL架构基础:
- 连接层、查询缓存、解析器、优化器、存储引擎(如InnoDB、MyISAM)的协同工作流程。
- 索引优化核心原则:
- B+树索引结构特性
- 最左前缀匹配原则
- 覆盖索引(Covering Index)减少回表
- 高性能索引策略:
- 前缀索引(
ALTER TABLE t ADD INDEX (col(10))
) - 多列索引顺序选择(高频查询字段优先)
- 避免冗余索引
- EXPLAIN深度解析:
- type列(从优到差:const > ref > range > index > ALL)
- Extra列关键值(Using index、Using filesort、Using temporary)
- InnoDB关键机制:
- 聚簇索引组织表
- MVCC实现非阻塞读
- 间隙锁(Gap Lock)防止幻读
- 事务隔离级别实战影响:
- READ UNCOMMITTED → REPEATABLE READ 的并发控制差异
- 死锁检测与避免策略
- SQL优化黄金法则:
- 避免
SELECT *
- 用JOIN替代子查询(优化器限制)
- 批量操作(
INSERT ... VALUES (...),(...)
)
- 查询缓存陷阱:
- 高并发下失效开销
query_cache_type=DEMAND
按需使用
- Schema设计规范:
- 整型优先于字符串(IP存为INT UNSIGNED)
- VARCHAR合理设置长度
- 避免NULL(用0或空字符串替代)
- 性能分析工具链:
- 慢查询日志(
long_query_time=1
) - pt-query-digest分析TOP SQL
- Performance Schema监控资源消耗
- 慢查询日志(
- 分区表实战场景:
- RANGE分区按时间归档
- 避免跨分区查询
- 主从复制调优:
- 半同步复制(
rpl_semi_sync_master_wait_for_slave_count
) - 并行复制(
slave_parallel_workers
)
- 半同步复制(
- 缓冲池(Buffer Pool)优化:
innodb_buffer_pool_size
设为物理内存70-80%- 预热脚本(
SELECT ... INTO OUTFILE
加载热点数据)
- 临时表与排序优化:
tmp_table_size
控制内存临时表阈值- 增加
sort_buffer_size
避免磁盘排序
- 连接池配置:
max_connections
与thread_cache_size
平衡- 应用层连接池(如HikariCP)复用连接
- SSD适配配置:
innodb_io_capacity
提升IOPS上限innodb_flush_neighbors=0
关闭相邻页刷新
- 高可用架构:
- MGR(MySQL Group Replication)
- 基于VIP的故障转移
- 读写分离中间件(如ProxySQL)
- 备份策略:
- 物理备份(Percona XtraBackup)
- 逻辑备份(
mysqldump --single-transaction
) - 二进制日志(binlog)时间点恢复
- 云原生适配:
- 容器化部署资源限制
- Kubernetes StatefulSet管理有状态服务
- 版本升级实践:
- 5.7 → 8.0的兼容性检查(
mysql_upgrade
) - 新特性利用(如窗口函数、Hash Join)
- 5.7 → 8.0的兼容性检查(