截断Google扳手表而不删除并重新创建该表

时间:2020-05-20 16:08:47

标签: google-cloud-platform google-cloud-spanner

我们正在使用Spanner db暂存大型数据集,并且希望按计划截断表。该表随时可容纳25+百万行。我们希望截断表而不删除并重新创建它。 GCP中有哪些选项可以做到这一点。

当前,我们使用--enable-partitioned-dml选项手动运行Gcloud命令,并且在删除<1M行后超时。请提出更好的方法。

gcloud扳手数据库执行-sql数据库名称--sql =“从tableName中删除,其中SpannerCommitTS

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

1)解决此问题的方法是使用主键上的WHERE子句为不同的键范围同时发布多个分区DML删除。这样可以加快删除速度。

2)“ gcloud扳手数据库execute-sql db-name”命令还具有超时选项。尝试将其增加到更高的值。 在以下link中,默认超时为10分钟。因此,增加它会有所帮助。