【问题标题】:Does Cloud Spanner support a TRUNCATE TABLE command?Cloud Spanner 是否支持 TRUNCATE TABLE 命令?
【发布时间】:2017-09-02 03:46:57
【问题描述】:

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

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

如何有效清除表格内容?

【问题讨论】:

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


    【解决方案1】:

    Cloud Spanner 不支持这样的截断命令。如果你的表没有二级索引,那么你可以在 Delete 中指定 KeySet.all() ,但如果你的表有二级索引并且很大,这可能会失败。

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

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

    2)DROP TABLE MyTable

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

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

    【讨论】:

      猜你喜欢
      • 2017-10-24
      • 2017-07-28
      • 2017-07-05
      • 2017-08-13
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 2014-01-11
      • 2021-12-03
      相关资源
      最近更新 更多