首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS海王星查询系统冷呼速度慢

AWS海王星查询系统冷呼速度慢
EN

Stack Overflow用户
提问于 2022-06-07 11:41:38
回答 1查看 114关注 0票数 1

我目前正在运行一些查询,在第一个调用(最多2分钟)到接下来的一个(大约5秒)之间,性能差距很大。

这种持续时间差异可以通过gremlin在执行模式和配置文件模式中看到。

由于查询正在加载大量数据,我预计问题来自Neptune在其默认配置中的缓存功能。我无法通过配置找到任何改进这种行为的方法,我很乐意有一些建议,以减少第一次调用的长度。

上下文:

Neptune数据库运行在db.r5.8x大型实例上,在执行过程中CPU始终保持在20%以下。在测试过程中,我也是这个实例的唯一用户。

由于我们没有差异输入,所以每周重新创建数据库,并在加载器加载完所有内容后切换到生产。这样,我们的数据库就有了很短的生存期。

该数据库包含略高于1.000.000.000个节点和更多边缘的节点。(可能约为10.000.000.000)这些边缘被分割成10种类型的标签,其中大多数不在当前查询中使用。

查询:

代码语言:javascript
复制
// recordIds is a table of 50 ids.
g.V(recordIds).HasLabel("record")
    // Convert local id to neptune id.
    .out('local_id')
    // Go to tree parent link. (either myself if edge come back, or real parent)
    .bothE('tree_top_parent').inV()
    // Clean duplicates.
    .dedup()
    // Follow the tree parent link backward to get all children, this step load a big amount of nodes members of the same tree.
    .in('tree_top_parent')
    .not(values('some flag').Is('Q'))
    // Limitation not reached, result is between 80k and 100K nodes.
    .limit(200000)
    // Convert back to local id for the 80k to 100k selected nodes.
    .in('local_id')
    .id()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-07 13:21:55

海王星的体系结构由一个共享集群“卷”(所有数据被持久化,该数据在3个可用性区域中被复制6次)和一系列解耦的计算实例(一个写入器和单个集群中最多15个读取副本)组成。但是,实例上没有数据持久化,实例上大约65%的内存容量保留给缓冲池缓存。当数据从基础群集卷中读取时,数据将存储在缓冲池缓存中,直到缓存填充为止。一旦缓存被填充,最近使用最少的(LRU)驱逐策略将为任何更新的读取清除缓冲池缓存空间。

由于需要从底层存储中获取对象,通常会看到第一次读取速度较慢。我们可以通过编写和发出“预取”查询来改进这一点,这些查询可以将他们认为在不久的将来可能需要的对象拉进来。

如果您有一个填充缓冲池缓存并不断查看缓冲池缓存错误的用例(可以在海王星的CloudWatch度量中看到一个度量),那么您可能还需要考虑使用"d“实例类型之一(例如: r5d.8xlarge),并启用查找缓存功能1。该功能特别关注于通过将属性值/文本保留在实例上的直接连接的NVMe存储中,在查询时改进对属性值/文本的访问。

1

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72530603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档