MySQL核心技术手册(第2版)(戴尔(RussellJ.T.Dyer))

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

  1. “MySQL的存储引擎架构将核心服务层(如SQL解析)与底层存储(如InnoDB、MyISAM)解耦。”
  2. “InnoDB的聚簇索引(Clustered Index)将数据行直接存储在B+树叶子节点,主键查询极快。”
  3. “事务的ACID特性通过InnoDB的undo log(原子性)、redo log(持久性)和锁机制(隔离性)实现。”
  4. EXPLAIN输出中的type列揭示查询访问类型:ALL(全表扫描)最差,const(主键)最优。”
  5. “复合索引遵循最左前缀原则,索引(a,b,c)无法优化WHERE b=1的查询。”
  6. JOIN操作应确保关联字段有索引,避免笛卡尔积(Cartesian Product)导致性能灾难。”
  7. “慢查询日志(slow_query_log)定位性能瓶颈,long_query_time定义阈值(默认10秒)。”
  8. “分页查询优化:LIMIT 10000,20改为WHERE id > 10000 LIMIT 20,避免偏移量过大。”
  9. VARCHAR变长字符串节省空间,但CHAR定长更适合频繁更新的短字段(如邮编)。”
  10. “批量插入用INSERT INTO ... VALUES (...), (...), ...替代多次单条插入,提升10倍性能。”
  11. utf8mb4字符集支持完整Unicode(如emoji),替代有缺陷的utf8(仅3字节存储)。”
  12. “主从复制(Replication)通过binlog实现,配置server_idlog_bin开启。”
  13. mysqldump --single-transaction备份InnoDB表时不会锁表,利用事务一致性快照。”
  14. “死锁(Deadlock)可通过SHOW ENGINE INNODB STATUS分析,应用端应实现重试机制。”
  15. ORDER BYGROUP BY的列不一致时,可能触发临时表(Using temporary)和文件排序(Using filesort)。”
  16. “分区表(Partitioning)按范围/列表/哈希拆分大表,但需注意分区键选择和查询条件匹配。”
  17. “连接池(如C3P0)减少连接创建开销,wait_timeout控制空闲连接自动断开时间。”
  18. sql_mode严格模式(如STRICT_TRANS_TABLES)阻止无效数据插入,避免静默截断。”
  19. “内存调优:innodb_buffer_pool_size设为物理内存70%-80%,缓存表数据和索引。”
  20. “监控关键指标:QPS(Queries Per Second)、线程池状态(SHOW STATUS LIKE 'Threads%')、锁等待时间。”

发表评论

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