数据库优化:索引、分库分表与常见手段(以 PostgreSQL 为主线)
目标:2-3 小时,搞懂「数据量大了、查询慢了,到底该怎么优化数据库」。
本教程重原理、重思路、重优先级,不深挖底层源码。核心是让你建立一条优化路径:从最便宜的索引优化,到读写分离、缓存,最后才是「分库分表」这种重武器。
这篇教程适合谁?
- 会写 SQL、建过表,但一遇到「慢」就束手无策的同学
- 听过「加索引、分库分表」,但不知道什么时候该用、按什么顺序用的同学
- 想建立「数据库优化决策树」,而不是遇事就想着「分库分表」的同学
学完你能做到
- 理解索引为什么能加速查询(B+ 树直觉版),以及它的代价
- 掌握索引优化实战:联合索引、覆盖索引、索引失效、用
EXPLAIN读执行计划 - 会用分库分表之前的所有牌:SQL 优化、读写分离、缓存
- 说清楚分库分表为什么做、怎么拆、会带来什么新问题
- 面对一个慢数据库,能按正确的优先级一步步优化,而不是上来就拆库
为什么以 PostgreSQL 为主线?
结合你的技术栈(Python + FastAPI + PostgreSQL)。索引、EXPLAIN、优化手段都以 PostgreSQL 语法演示。分库分表部分是通用架构思想,各数据库相通。
一个贯穿全教程的核心思想
优化是有优先级的:先榨干单库(索引 → SQL → 缓存 → 读写分离),实在不行才分库分表。 分库分表能解决问题,但会带来一堆新问题(分布式 ID、跨库查询、分布式事务),是「最后的重武器」,不到万不得已别用。
目录(建议按顺序学)
第一部分 · 索引优化(性价比最高,先做这个)
- 01 - 索引的本质:为什么能加速
- 02 - 索引优化实战
- 03 - 用 EXPLAIN 读懂执行计划
第二部分 · 分库分表之前的所有牌
- 04 - SQL 与表结构优化
- 05 - 读写分离与缓存
第三部分 · 分库分表(最后的重武器)
- 06 - 为什么要分库分表
- 07 - 怎么分:拆分策略
- 08 - 分库分表带来的新问题
第四部分 · 总结篇
- 09 - 总结:数据库优化决策树
怎么用这份教程?
- 赶时间:看 01、02、03(索引三章)就能解决 80% 的性能问题。
- 想系统学:从头按顺序读,重点体会「优化的优先级顺序」。
开始吧 → 01 - 索引的本质:为什么能加速