高效能MySQL-提升MySQL性能的技术与技巧(【美】丹尼尔·尼希特)

书: https://pan.baidu.com/s/1LWWovU7IScpiddLrDhjl1w?pwd=pc5n
笔记如下:

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

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注