首页 > 解决方案 > 有没有办法在 Cosmos DB Java V4 API 中读取数据库链接?

问题描述

例如,读取“dbs/colls/document”而不是获取容器,然后在容器上调用 read。

我一直有一个问题,readItem容器上的第一个(调用后database.getContainer(x))非常慢(比如 1 秒或更长),并且认为使用数据库链接可能会更快。

我猜在获取容器后读取速度很慢,因为在我调用 read 之前它不会进行服务调用。

在数据库中读取时,有没有办法可以预加载它?

我有一个带有 read(collectionName, key) 方法的应用程序,我的方法是使用 getContainer(collectionName) 然后调用 read ,但是这个方法需要很快。

标签: azureazure-cosmosdb

解决方案


如前所述,最佳实践是在请求之间保持容器实例处于活动状态,并在每个请求上调用 readItem。这应该可以解决主要问题。

至于次要问题,“每 50 个请求左右的高延迟”,这是一个已知问题,但它应该只发生在操作的第一分钟左右。如果您可以容忍最初的缓慢请求,则解决方案是等待性能稳定。在您不再看到这些高延迟请求之前,您必须运行您的应用程序多长时间?

仅供参考,如果延迟是一个问题,请在地理上托管的 Azure VM 中运行您的客户端应用程序。一个好的经验法则是分配客户端 CPU 内核,使 CPU 利用率不超过 40% 或 50%。


推荐阅读