MySQL实战(陈臣)

书: https://pan.baidu.com/s/1hMg-9fMkkzntAfHoLymQMA?pwd=2tx9
笔记如下:

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

发表评论

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