Cloud Spanner是否支持TRUNCATE TABLE命令?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cloud Spanner是否支持TRUNCATE TABLE命令?相关的知识,希望对你有一定的参考价值。
我想清除表中的所有值。它有一些二级索引。我试图通过与Mutation.delete("MyTable", KeySet.all())
进行交易来做到这一点(参见docs here)。但是我收到了一个错误:
错误:INVALID_ARGUMENT:io.grpc.StatusRuntimeException:INVALID_ARGUMENT:事务包含太多突变。
如何有效清除表格内容?
答案
Cloud Spanner不支持这样的truncate命令。如果您的表没有二级索引,那么您可以在上面指定的Delete中指定KeySet.all(),但如果您的表具有二级索引并且很大,则可能会失败。
做你想做的最好的方法是发布一个updateDdl RPC,包括以下语句:
1)对于MyTable上的每个二级索引,包括相应的DROP INDEX
语句
2)DROP TABLE MyTable
3)如有必要,分别通过CREATE TABLE
和CREATE INDEX
语句重新创建表和索引。
请注意,允许并鼓励您在单个updateDdl
RPC中包含所有这些语句。这样做的好处是它为您提供了原子(“全有或全无”)语义。
以上是关于Cloud Spanner是否支持TRUNCATE TABLE命令?的主要内容,如果未能解决你的问题,请参考以下文章
Google Cloud Spanner 是不是支持任意多对多关系?