截断Google spanner表而不删除,并重新创建表。

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

我们正在使用Spanner db来暂存大型数据集,我们想在计划的基础上截断表。我们想在不放弃和重新创建的情况下截断表。在GCP中,有什么办法可以做到这一点。

目前,我们手动运行Gcloud命令与--enable-partitioned-dml选项,这是删除< 1M行后计时。请提出更好的方法。

gcloud spanner databases execute-sql db-name --sql="delete from tableName where SpannerCommitTS

google-cloud-platform google-cloud-spanner
1个回答
1
投票

Cloud Spanner 中仍然不支持截断功能。您可以尝试使用 KeyRange 或 KeySet(根据您的数据)的 Mutation.delete 方法来避免 20k 突变限制。

为了避免手动工作,你可以编写一个Google Dataflow作业,它可以使用SpannerIO从你的表中读取,然后使用SpannerIO.write进行突变删除,或者可能是一个自定义PTransform(使用mutatons.delete)来根据你的要求进行删除。


0
投票

1) 解决这个问题的方法是使用WHERE子句在主键上同时发布多个不同键范围的Partitioned DML删除。这将加快删除速度。

2)"gcloud spanner databases execute-sql db-name "命令也有一个超时选项。试着把它增加到一个更高的值。联系貌似默认的超时是10分钟。所以增加这个时间会有一点帮助。

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