具有包含html的大属性的元素的Azure Cosmos DB的性能

时间:2017-09-01 12:50:07

标签: azure gremlin tinkerpop3 azure-cosmosdb

我们正在使用Azure Cosmos DB Graph API来缓存来自CMS的项目,这些项目的属性包含相当大的html块。

添加8000项时,Cosmos DB开始变得很慢。

例如,这个简单的查询大约需要12-15秒才能完成:

g.V().hasLabel('news').limit(10)

每个顶点的数据大约在4-5 kb左右,我在图表设置中排除了Content-property。

我已将RU增加到5000 / s,Azure门户中的Monitor-tab似乎表示已足够。 Estimating throughput needs表示5000 RU应该足够500次读取,但我甚至不能做一次。

查询没有像g.V()这样的html属性的项目.hasLabel('user')仍然很快。

我也尝试从索引中排除路径但没有区别(如果有必要,还没有重新加载项目?)

"excludedPaths": [
        {
            "path": "/Content/?"
        }
    ]

我可以做些什么来加快速度?

1 个答案:

答案 0 :(得分:2)

如果您使用的是.NET SDK,则该请求似乎会检索“hasLabel”过滤器的所有结果,并在客户端SDK代码中执行“限制”过滤。

我用Fiddler中的“limit”扩展名嗅探了一些查询,无论值如何,请求中的查询都不包含TOP子句。请求正文中的文档db查询如下所示: {"query":"SELECT N_2 FROM Node N_2 WHERE (IS_DEFINED(N_2._isEdge) = false AND (N_2.label = 'news'))"}

我希望它是:{"query":"SELECT TOP 10 N_2 FROM Node N_2 WHERE (IS_DEFINED(N_2._isEdge) = false AND (N_2.label = 'news'))"}