我正在学习如何使用DynamoDB for .net而且我有一个疑问,是否有正确的方法从现有表中删除所有项目?我的意思是,我不想删除桌子,只是把它清空。 我已经阅读了有关批处理的内容,但他们对我帮助不大。
我有这个
private string DeleteAllFromTable()
{
string result = string.Empty;
try
{
var request = new BatchWriteItemRequest
{
RequestItems = new Dictionary<string, List<WriteRequest>>
{
{
this.Tablename, new List<WriteRequest>
{
new WriteRequest
{
DeleteRequest = new DeleteRequest
{
Key = new Dictionary<string,AttributeValue>()
{
{ "Id", new AttributeValue { S = "a" } }
}
}
}
}
}
}
};
var response = this.DynamoDBClient.BatchWriteItem(request);
}
catch (AmazonDynamoDBException e)
{
}
return result;
}
但是,当然,只删除与值&#34; a&#34;匹配的id。
感谢。
答案 0 :(得分:6)
我建议你只删除表并重新创建它。来自DynamoDB Guidelines for Working with Tables documentation:
...
删除整个表比删除更有效 逐个项目,这使写入吞吐量基本上翻了一番 你执行与put操作一样多的删除操作。
答案 1 :(得分:0)
删除表并使用索引重新创建它可能会导致应用程序出现故障,因为删除/创建表通常需要很多时间,从而导致资源处于删除状态错误