Cloud Spanner 是否支持 TRUNCATE TABLE 命令



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

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

如何有效地清除表内容?

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

执行所需操作的最佳方法是发出包含以下语句的 updateDdl RPC:

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

2( DROP TABLE MyTable

3( 如有必要,分别通过 CREATE TABLECREATE INDEX 语句重新创建表和索引。

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

最新更新