日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

性能優化

本文介紹優化圖數據庫GDB性能的方法,幫助您快速定位圖數據庫GDB的性能問題,提升查詢效率。

設置查詢范圍

圖數據庫GDB的查詢分析引擎程序能夠根據數據輸入提供適合需求的查詢方式。當查詢數據量大時,您可以指定查找數據的范圍(特定的label,查詢屬性的起始范圍、終止范圍、迭代次數等)。

示例:

  • 推薦方案(將過濾屬性限制在10~30內)

    g.V().hasLabel("person").has("age",P.gt(10).and(lt(30))).limit(5)
  • 普通方案

    g.V().has("age",P.gt(10))

查詢最短路徑

  • 圖數據庫GDB采用DFS(深度優先搜索)策略實現最短路徑,當您的業務中圖數據的連通規模非常大時,您可以在進行最短路徑查詢時添加限制條件。

    示例:

    • 推薦方案(限制了最短路徑的最大深度)

      g.V($startV).repeat(both().simplePath()).until(hasId($endV).or().loops().is(gt($depth))).hasId($endV).path()
    • 普通方案

      g.V($startV).repeat(both().simplePath()).until(hasId($endV))
  • 當您的業務中需要將數據按照權重進行最短路徑查詢,您可以按照邊的權重進行排序。

    示例:

    g.V(fromVertexId)
      .repeat(outE().inV().simplePath())
      .until(hasId(toVertexId).or().loops().is(gt(deepLimit)))
      .hasId(toVertexId).path().as(‘p’)
      .map(unfold().coalesce(values(‘weight’),constant(0.0)).sum())
      .as(‘cost’).select(‘cost’,’p’).order().by(select(“cost”),Order.incr)

規避超級頂點

圖數據庫GDB具有自動索引機制和強大的統計分析引擎,為您提供適合的執行優化。即使如此,也建議您在使用圖數據庫GDB時通過規則規避業務中的超級頂點。

查詢修改的合并語句

如果您的業務需要在使用Gremlin查詢的同時修改property,您可以使用查詢修改的合并語句。

示例:

g.V("test").property("nums", union(values("nums"), constant(1)).sum())

查詢超時分析

如果您的業務場景比較復雜,容易出現超時的情況,您可以使用profile()語句,對查詢中每一步的執行性能進行分析。通過性能分析,您可以對查詢執行中涉及到的數據分布情況有明確了解(例如超級頂點、隨機查詢大量數據、屬性過濾等比較耗時的數據)。

查詢請求示例:

g.V().out().limit(10).profile()

返回數據示例:

==>Traversal Metrics
Step                                                               Count   Traverses       Time (ms)    % Dur
=============================================================================================================
GraphDbGraphStep(vertex,[])                                           29          29           1.657    77.43
VertexStep(OUT,vertex)                                                11          11           0.410    19.18
RangeGlobalStep(0,10)                                                 10          10           0.072     3.39
                                            >TOTAL                     -           -           2.140        -

執行profile() 后生成的TraversalMetrics對象包含如下信息:

  • Step(步驟):當前在遍歷中被分析的步驟,更多信息請參見Gremlin(中文)

  • Count(計數):通過該步驟過濾的遍歷數量。

  • Traverses(遍歷):通過該步驟過濾的去重后的遍歷數量。

  • Time (ms)(時間):該步驟主動執行遍歷的總時間,單位:毫秒。

  • % Dur:該步驟的耗時占總時間的百分比。

說明

DMS不支持profile() 命令,建議您通過Gremlin Console連接實例后使用該命令。如何通過Gremlin Console連接實例,請參見通過Gremlin Console連接實例