我在 Google Cloud Spanner 上有一个名为 'decision' 的数据库。
我已将此 'decision' 数据库导出到 Google Cloud Storage 存储桶。
然后,我将导出的数据库导入到名为 'decision_backup' 的新 Spanner 数据库中。
我还将之前导出的 'decision' 数据库导入回原来的 'decision' 数据库,它只是覆盖了数据。
我执行了行计数和表计数来检查数据丢失,行计数和表计数与预期匹配,表明没有发生数据丢失。
但是,我注意到数据库的大小不同,即使它们来自相同的快照时间。
上周,'decision' 数据库为 1.74TB,'decision_backup' 数据库为 177GB。
在这一周内,“决策”数据库的大小逐渐减小,现在为 184GB。
“decision_backup”数据库的大小也已减小至 122GB,但幅度不大。 如果数据库中的数据相同或相同,那么这种显着大小差异的原因是什么?两个数据库大小逐渐减少的原因是什么?
然后,我将导出的数据库导入到名为“decision_backup”的新 Spanner 数据库中。
导出的数据不存储过去的值,因此您看到的大小应该接近数据的实际大小。在恢复期间,Cloud Spanner 可能会执行基于负载或基于大小的拆分并移动拆分,这可能会产生一些临时开销,因为数据可能同时存在于 src/dst 中。清理不是立即进行的,它会在时间和空间上传播到整个数据库(即每个分区都有自己的时间表)。
我还将之前导出的“决策”数据库导入回原来的“决策”数据库,它只是覆盖了数据。
1小时由于您要覆盖数据,过去的值仍会保留(默认时间窗口为
。理论上,大小可能是实际大小的两倍(每个键都存储旧值和新值)。但是如果您的数据库的保留期较长,或者更新较频繁,大小可能会更大。 同样的基于负载/基于大小的分割也可能发生。而且“开销”可能会更多,因为发生拆分时需要移动更多数据。
最终,如果两个数据库都没有写入任何新内容,它们的大小应该会收敛。