【发布时间】:2019-11-16 20:56:58
【问题描述】:
我在 Google Cloud Spanner 中有多个 TB 大小的表。
我正在尝试在此表上执行更大的 DELETE 语句:
gcloud spanner databases execute-sql production --instance=keys --enable-partitioned-dml --sql="DELETE FROM keys WHERE datetime >= '2018-01-01T00:00:00Z' AND datetime <= '2018-12-31T23:59:59Z'" --timeout=100000000
不幸的是,这不会执行,而是我得到:
ERROR: (gcloud.spanner.databases.execute-sql) ABORTED: Aborted due to transient fault
基本上,我无法从 Spanner 表中删除任何行,即使选择较小的集合(例如,只删除一天而不是全年)也是如此。 这可能是什么问题?
编辑: 表的Schema如下:
CREATE TABLE keys (
key STRING(MAX),
data STRING(MAX),
datetime TIMESTAMP,
) PRIMARY KEY (key)
【问题讨论】:
-
你好@user9114945,我不清楚你为什么会收到这个错误。由于 Cloud Spanner 是一个特殊的产品,我建议您在 GCP 上open a support case(如果您有支持包)。您将在那里获得更多帮助并获得有关您的问题的详细说明。
-
您能分享一下您的架构吗?也许尝试过滤主键的前缀以减少扫描的行数。
-
嘿,罗斯,我已经用 Schema 更新了帖子。感谢您对前缀过滤的输入,我将结合我的其他删除条件进行尝试
-
我复制了你的场景并且对我来说工作正常。那么,您能否确认一下到目前为止我所理解的名称结构: Spanner 实例:keys 实例上的数据库:生产数据库上的表:keys 我说得对吗?
-
谢谢 TasosV,我认为问题在于我的表有多个 TB 大小。我找到了一个使用 Rose 提案的半解决方案。目前,我设法每 5 分钟删除大约 300k 行。这没什么,但仍然是一些东西。
标签: google-cloud-platform google-cloud-spanner