我们使用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次读/秒,但我甚至不能做一次 .
查询没有html属性的项目,如g.V() . hasLabel('user')仍然很快 .
我也尝试从索引中排除路径,但没有区别(如果有必要,还没有重新加载项目?)
"excludedPaths": [
{
"path": "/Content/?"
}
]
我该怎么做才能加快速度?
1 回答
如果您使用的是.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'))"}