为什么相同 Spanner 数据库的副本大小存在差异?

问题描述 投票:0回答:1

我在 Google Cloud Spanner 上有一个名为 'decision' 的数据库。

我已将此 'decision' 数据库导出到 Google Cloud Storage 存储桶。

然后,我将导出的数据库导入到名为 'decision_backup' 的新 Spanner 数据库中。

我还将之前导出的 'decision' 数据库导入回原来的 'decision' 数据库,它只是覆盖了数据。

我执行了行计数和表计数来检查数据丢失,行计数和表计数与预期匹配,表明没有发生数据丢失。

但是,我注意到数据库的大小不同,即使它们来自相同的快照时间。

上周,

'decision' 数据库为 1.74TB,'decision_backup' 数据库为 177GB。

在这一周内,

“决策”数据库的大小逐渐减小,现在为 184GB。

“decision_backup”

数据库的大小也已减小至 122GB,但幅度不大。 如果数据库中的数据相同或相同,那么这种显着大小差异的原因是什么?两个数据库大小逐渐减少的原因是什么?

google-cloud-platform google-cloud-storage size google-cloud-dataflow google-cloud-spanner
1个回答
0
投票

然后,我将导出的数据库导入到名为“decision_backup”的新 Spanner 数据库中。

导出的数据不存储过去的值,因此您看到的大小应该接近数据的实际大小。在恢复期间,Cloud Spanner 可能会执行基于负载或基于大小的拆分并移动拆分,这可能会产生一些临时开销,因为数据可能同时存在于 src/dst 中。清理不是立即进行的,它会在时间和空间上传播到整个数据库(即每个分区都有自己的时间表)。

我还将之前导出的“决策”数据库导入回原来的“决策”数据库,它只是覆盖了数据。

由于您要覆盖数据,过去的值仍会保留(默认时间窗口为
1小时

。理论上,大小可能是实际大小的两倍(每个键都存储旧值和新值)。但是如果您的数据库的保留期较长,或者更新较频繁,大小可能会更大。 同样的基于负载/基于大小的分割也可能发生。而且“开销”可能会更多,因为发生拆分时需要移动更多数据。

最终,如果两个数据库都没有写入任何新内容,它们的大小应该会收敛。

© www.soinside.com 2019 - 2024. All rights reserved.