来源:markus-winand · 原文

这一章特别像给“现在跑得挺快啊”这种团队常见幻觉泼冷水。它提醒我,数据库性能里最危险的判断之一,就是拿当前数据量下的短期体感,替代对增长曲线的理解。

核心判断

这一章反复强调:硬件扩容主要提升吞吐,不会神奇修复单条低效查询的访问路径。 如果查询本身在扫描大量无关索引项或表行,更多机器通常只是缓解,不是根治。我很喜欢这句话,因为它直接把“可扩展性”从硬件讨论重新拉回到了访问路径讨论。

可扩展性的正确看法

作者把可扩展性定义成“性能对环境变化的依赖”,而不只是谁家机器更大。对数据库来说,最关键的变化包括:

  • 数据量增长;
  • 并发负载增加;
  • 不同值分布导致的访问路径差异。

索引与数据量增长

这一章最有启发的点是:两条现在都够快的查询,在数据量扩大后可能呈现完全不同的退化速度。

如果索引只能把一部分条件当 access predicate,随着数据增长,它会被迫扫描越来越大的区间;反过来,真正把访问范围收紧的索引,增长曲线会平滑得多。

我的吸收

看这章时,最应该改掉的习惯是:不要用开发环境里的“目前很快”替代对长期数据规模的判断。 更靠谱的问题应该是:这条 SQL 在 10 倍、100 倍数据量下会沿着什么曲线变慢?我会把这一章当成“性能曲线意识”的启蒙页。


相关页面:use-the-index-luke · sql-indexing · query-shape-and-index-usage · sql-execution-plans