我们使用 Azure Cosmos DB Graph API 缓存来自 CMS 的项目,这些项目的属性包含相当大的 html block 。
添加 8000 个项目时,Cosmos DB 开始变得非常慢。
例如,这个简单的查询大约需要 12-15 秒才能完成:
g.V().hasLabel('news').limit(10)
每个顶点中的数据约为 4-5 kb,我已在图形设置中排除了内容属性。
我已将 RU 增加到 5000/s,Azure 门户中的“监视器”选项卡似乎表明已经足够了。 Estimating throughput needs建议 5000 RU 应该足以实现 500 次读取/秒,但我什至都做不到。
查询没有 html 属性的项目(例如 g.V().hasLabel('user') )仍然很快。
我也尝试从索引中排除路径,但没有区别(如果有必要,还没有重新加载项目?)
"excludedPaths": [
{
"path": "/Content/?"
}
]
我该怎么做才能加快速度?
最佳答案
如果您使用的是 .NET SDK,则该请求似乎会检索“hasLabel”过滤器的所有结果,并在客户端 SDK 代码中执行“limit”过滤。
我在 Fiddler 中嗅探了一些带有“limit”扩展的查询,无论值如何,请求中的查询都不包含 TOP 子句。请求正文中的文档数据库查询如下所示:
{"query":"从节点 N_2 WHERE (IS_DEFINED(N_2._isEdge) = false AND (N_2.label = 'news')) 中选择 N_2"}
我希望它是: {"query":"SELECT TOP 10 N_2 FROM Node N_2 WHERE (IS_DEFINED(N_2._isEdge) = false AND (N_2.label = 'news'))"}
关于azure - 具有包含 html 的大属性的元素的 Azure Cosmos DB 的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46000641/