图应用性能问题、陷阱与反模式
在图应用中,性能问题是一个常见且需要重视的方面。本文将探讨图应用中性能问题的相关内容,包括慢执行遍历的诊断方法、索引的使用,以及超级节点的处理等。
1. 慢执行遍历
当用户反馈应用程序运行缓慢时,我们需要定位问题所在。例如,有用户提交了“应用程序缓慢”的工单,并告知在执行“查找 Dave 的三个拥有最多连接的朋友的朋友”请求时出现问题。我们找到了对应的遍历代码:
g.V().has('person', 'first_name', 'Dave').
both('friends').
both('friends').
groupCount().
by('first_name').
unfold().
order().
by(values, desc).
by(keys).
project('name', 'count').
by(keys).
by(values).
limit(3)
接下来,我们需要诊断这个慢执行的遍历。图数据库和关系数据库一样,都有处理慢操作的工具,主要有两种形式:解释遍历操作和分析遍历执行情况。
1.1 解释遍历
explain() 步骤可以让我们在不执行遍历的情况下了解其运行方式。这类似于关系数据库中的估计执行计划,数据库优化器会在重新排列和优化遍历后,展示输出结果,但不会实际在数据上运行遍历。例如,对上述慢遍历执行 explain() 步骤:
超级会员免费看
订阅专栏 解锁全文
1192

被折叠的 条评论
为什么被折叠?



