在应用启动前预热数据库

在发布应用之前,我们建议您使用测试数据加载来预热数据库,以便利用 Spanner 的并行化功能。

Spanner 是一个分布式数据库,这意味着随着数据库不断增长,Spanner 会将数据的键空间划分为称为“分片”的区块。每个分块是一系列行,其中包含表的子集。由于 Spanner 根据负载和大小拆分数据,因此它会动态地彼此独立地移动各个分片,并将各个分片分配给不同的服务器资源,以平衡数据库上的总体负载。

当您最初将数据插入空数据库时,Spanner 会将数据写入单个分块。数据库仍处于“冷”状态。当您插入更多数据时,Spanner 会开始拆分这些数据,以在其他可用服务器资源之间再平衡负载。现在,Spanner 处于“温”状态,会在可用的服务器资源之间进行拆分,以最大限度地提高并行性并提高性能。

最佳做法是,在 Spanner 处于热状态且分块已创建且跨服务器资源均衡时启动应用。如需预热数据库并准备测试数据加载,请按以下步骤操作:

  1. 请确保为测试数据加载生成的主键位于同一键空间中,并且与用于生产流量的键具有相同的分布属性。
  2. 在发布前两天内运行负载测试。在预期的峰值负载下运行负载测试至少 1 小时。负载测试会导致 Spanner 因基于负载的拆分而创建更多分片。
  3. 负载测试完成后,可以从表中删除负载测试生成的行,但不要删除表本身。这样便可以在发布期间使用分片。