gremlin hasLabel查询超时

gremlin hasLabel query times out

我有一个测试图,节点数少于一百万,边数可能略多。我正在使用远程 gremlin 客户端连接到由 3 个 scylla 后端支持的 janusgraph/gremlin-server 实例。

我有各种不同的标记节点,即 url、域、主机和品牌。该图主要包含 url、域和主机节点。我在整个图表中有一个品牌节点。品牌节点如下所示:

{
    label: brand 
    properties: {
        brand: string
    }
}

我可以在 1.5 毫秒内完成以下查询。品牌 属性 有综合指数。

g.V().hasLabel('brand').has('brand','Whosebug');

下面的查询达到 30 秒超时。我希望此查询仅 return 基于我导入到图表中的数据的结果。我通过限制测试验证

g.V().hasLabel('brand')

我的问题

谢谢

  • 为什么会超时?
  • Janusgraph 是否在扫描所有节点 尝试找到标记为 'brand' 的单个节点的图表?有没有 标签上的默认索引?

如您所料,这可能是由于全图扫描而超时,因为顶点标签未在 JanusGraph 中编制索引。有一个未解决的问题:https://github.com/JanusGraph/janusgraph/issues/283

  • 为什么当第一个查询的第一步相同时第一个查询执行得很好?

在这种情况下,我怀疑 JanusGraph 的优化器能够优化遍历计划以使用复合索引。