1

我想清除表中的所有值。它有一些二级索引。我尝试通过提交交易来做到这一点(请参阅此处Mutation.delete("MyTable", KeySet.all())的文档)。但我得到一个错误:

错误:INVALID_ARGUMENT:io.grpc.StatusRuntimeException:INVALID_ARGUMENT:事务包含太多突变。

我怎样才能有效地清除我的表格内容?

4

1 回答 1

3

Cloud Spanner 不支持此类截断命令。如果您的表没有二级索引,那么您可以如上所述在 Delete 中指定 KeySet.all(),但如果您的表有二级索引并且很大,则此操作可能会失败。

做你想做的最好的方法是发出一个updateDdl RPC,包括以下语句:

1)对于MyTable上的每个二级索引,包含一个对应的DROP INDEX语句

2)DROP TABLE MyTable

CREATE TABLE3) 如有必要,分别通过andCREATE INDEX语句重新创建表和索引。

请注意,允许并鼓励您将所有这些语句包含在单个updateDdlRPC中。这样做的好处是它为您提供了原子(“全有或全无”)语义。

于 2017-04-06T22:10:34.627 回答