图数据库性能、陷阱与反模式解析
1. 处理超级节点
1.1 超级节点监测方法
在图数据库中,超级节点的出现可能毫无预警。监测超级节点有两种常见方法:
- 全图遍历监测 :如图 10.5 所示的遍历方式,需要对图中的每个顶点访问一次(针对每个关联顶点),每条边访问两次。随着图的规模增大,这种遍历运行时间会变长,消耗的资源也会增多。示例遍历代码如下:
g.V().
project('vertex','degree').
by(identity()).
by(bothE().count()).
order().
by(select('degree'),desc).
limit(10)
该代码用于计算每个顶点的度,找出所有顶点,按度降序排序并返回前 10 个结果。
- 异常值监测 :通过应用监控工具对遍历性能进行被动监测,查找执行时间明显长于其他顶点的遍历。虽然超级节点不是性能缓慢的唯一原因,但却是导致遍历在特定顶点上出现性能差异的常见原因之一。
这两种方法虽有用,但都有缺点,由于涉及大量图数据,往往会导致查询运行时间长,给图数据库带来额外负载。因此,需要结合领域知识、合理的数据建模和持续监测来预防和识别超级节点。
1.2 判断超级节点是否为问题
判断超级节点是否会造成问题,需要考虑遍历超级节点的方式。以 DiningByFriends 模式中仅包含城市、州和餐厅顶点的子部分为例:
- 正常情况 </
超级会员免费看
订阅专栏 解锁全文
1194

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



