Azure cosmosdb 通过已知ID进行批量获取的最有效方法
假设我有一个ID列表,那么获取一堆文档的“最佳”方法是什么 我知道我可以尝试各种各样的东西,但在小范围内,可能所有的选择都有相似的性能。到目前为止,我什么也没试过——只是读文档 也许没有“最佳”方法,但各种方法(速度、成本、总吞吐量等)之间的权衡是什么Azure cosmosdb 通过已知ID进行批量获取的最有效方法,azure-cosmosdb,Azure Cosmosdb,假设我有一个ID列表,那么获取一堆文档的“最佳”方法是什么 我知道我可以尝试各种各样的东西,但在小范围内,可能所有的选择都有相似的性能。到目前为止,我什么也没试过——只是读文档 也许没有“最佳”方法,但各种方法(速度、成本、总吞吐量等)之间的权衡是什么 叹气-我知道这会被否决-就像“你尝试了什么”,“我们不会为你编写代码”等。我无法进行有意义的性能分析,除非有数千个并行请求同时出现在TB的数据上。我发誓我不是懒惰或不愿意投入工作,只是不想投入生产并发现我有性能问题,然后被告知“你到底为什么这样做
叹气-我知道这会被否决-就像“你尝试了什么”,“我们不会为你编写代码”等。我无法进行有意义的性能分析,除非有数千个并行请求同时出现在TB的数据上。我发誓我不是懒惰或不愿意投入工作,只是不想投入生产并发现我有性能问题,然后被告知“你到底为什么这样做?”关于使用DocumentDB执行读取的最佳方法的一些一般提示
- 如果您有少量文档,那么使用
将是最好的方法,跨多个线程使用readdocumentsync
分区键和
获取文档。每1KB文档的每次读取量为1 RU,在p99的读取时间不超过10毫秒id
- 如果您有大量文档,那么使用诸如
之类的查询将更有效,即来自客户端的连接更少,服务器端的RU也更少(通常每个返回的文档<1 RU)SELECT*FROM c,其中c.partitionKey='pk'和c.id IN('1'、'2'、…、'N')
- 如果需要跨多个分区键获取数据,则很难判断单个读取或单个查询的性能是否更好。这需要更详细的测试,并取决于读取的文档数量和不同分区键的数量