英文:
Does deleting Cosmos DB container consume RUs?
问题
在Cosmos DB容器中有大量无用文档。批量删除文档更好还是删除容器并重新创建它更好?批量删除会消耗RUs,但删除容器呢?删除容器之前删除文档会消耗RUs吗?
英文:
There are lot of junk documents in a Cosmos DB container. Is it better to bulk delete documents or drop the container and re-create it? Bulk delete consumes RUs, but what about deleting container? Does it consumes the RU to delete documents before dropping the container?
答案1
得分: 3
真的没有一个“正确”的答案 - 只有你能决定哪种方法更“好”,但... 从客观的角度来看:
- 删除容器的成本微乎其微,而且这是一次性的成本(也就是说...只有一个“删除”成本)。关于采取“删除集合”路线时删除所有文档的成本的问题:不,这只是一个集合删除 - 在删除集合时不会为删除的每个文档收取RU。
- 批量删除文档将消耗每个删除的文档的RU - 它绝对会花费RU,并且根据删除活动的侵略性,可能会出现限流的风险
- 删除所有文档需要考虑删除可能发生在分区之间 - 请相应地进行规划
- 如果删除集合,可能会有一个时间段,你的应用现在会因为集合不存在而抛出异常(直到重新创建集合,这可能需要几秒钟)
- 重新创建集合时,请确保重新创建集合的任何相关属性(自定义索引、存储过程等)。
作为批量删除的替代方案,你还可以利用ttl让旧文档过期。
英文:
There's really no "right" answer - only you can decide which approach is "better" but... from an objective perspective:
- Deletion of a container has negligible cost, and it's a one-time cost (that is... it's one single "delete" cost). And to your question regarding cost of deleting all the documents when taking the "delete collection" route: nope - it's just a collection-drop - you aren't charged RU for every document being removed, when dropping a collection.
- Deleting documents, in bulk, would consume RU for every document deleted - it would absolutely cost RU, and runs the risk of throttling, depending on how aggressive your deletion activity is
- Deleting all documents requires you to consider that deletes could occur across partitions - plan accordingly
- If you delete the collection, there could be a time period where your app is now throwing exceptions due to the collection not existing (until you re-create the collection, which could take several seconds)
- When re-creating a collection, be sure to re-create any related attributes of the collection as well (custom indexing, stored procedures, etc)
As an alternative to bulk-deleting, you can also take advantage of ttl to let old documents expire.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论