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 是否在扫描所有节点
尝试找到标记为 'brand' 的单个节点的图表?有没有
标签上的默认索引?
如您所料,这可能是由于全图扫描而超时,因为顶点标签未在 JanusGraph 中编制索引。有一个未解决的问题:https://github.com/JanusGraph/janusgraph/issues/283
- 为什么当第一个查询的第一步相同时第一个查询执行得很好?
在这种情况下,我怀疑 JanusGraph 的优化器能够优化遍历计划以使用复合索引。
我有一个测试图,节点数少于一百万,边数可能略多。我正在使用远程 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 是否在扫描所有节点 尝试找到标记为 'brand' 的单个节点的图表?有没有 标签上的默认索引?
如您所料,这可能是由于全图扫描而超时,因为顶点标签未在 JanusGraph 中编制索引。有一个未解决的问题:https://github.com/JanusGraph/janusgraph/issues/283
- 为什么当第一个查询的第一步相同时第一个查询执行得很好?
在这种情况下,我怀疑 JanusGraph 的优化器能够优化遍历计划以使用复合索引。