Azure Cosmos DB for Apache Gremlin 执行配置文件参考

本文提供了 Azure Cosmos DB for Apache Gremlin 中的执行配置文件功能的参考。 它说明函数返回 executionProfile() 的响应的结构和属性。

响应

函数调用的 executionProfile() 响应生成具有以下结构的 JSON 对象的层次结构。

Gremlin作

此对象表示已执行的整个 Gremlin作。 此对象命名 gremlin为 . 此对象包含以下属性:

Description
gremlin 已执行的显式 Gremlin 语句。
totalTime 执行步骤的时间(以毫秒为单位)。
metrics 一个数组,其中包含执行以完成查询的每个 Cosmos DB 运行时运算符。 此列表按执行顺序排序。

适用于 Apache Gremlin 运行时运算符的 Azure Cosmos DB

此列表表示整个 Gremlin作的每个组件。 该列表命名 metrcis。 此列表按执行顺序排序。 每个对象包含以下属性:

Description
name 运算符的名称。 此属性是计算和执行的步骤的类型。
time 给定运算符花费的时间(以毫秒为单位)。
annotations 包含特定于执行运算符的其他信息。
annotations.percentTime 执行特定运算符所花费的总时间的百分比。
counts 此运算符从存储层返回的对象数。 此计数包含在标量值内 counts.resultCount
storeOps 表示可以跨越一个或多个分区的存储作。
storeOps.fanoutFactor 表示此特定存储作访问的分区数。
storeOps.count 表示此存储作返回的结果数。
storeOps.size 表示给定存储作结果的大小(以字节为单位)。

示例响应

下面是 JSON 格式的示例响应:

[
  {
    "gremlin": "g.V().hasLabel('tweet').out().executionProfile()",
    "totalTime": 42,
    "metrics": [
      {
        "name": "GetVertices",
        "time": 31,
        "annotations": { "percentTime": 73.81 },
        "counts": { "resultCount": 30 },
        "storeOps": [ { "fanoutFactor": 1, "count": 13, "size": 6819, "time": 1.02 } ]
      },
      {
        "name": "GetEdges",
        "time": 6,
        "annotations": { "percentTime": 14.29 },
        "counts": { "resultCount": 18 },
        "storeOps": [ { "fanoutFactor": 1, "count": 20, "size": 7950, "time": 1.98 } ]
      },
      {
        "name": "GetNeighborVertices",
        "time": 5,
        "annotations": { "percentTime": 11.9 },
        "counts": { "resultCount": 20 },
        "storeOps": [ { "fanoutFactor": 1, "count": 4, "size": 1070, "time": 1.19 } ]
      },
      {
        "name": "ProjectOperator",
        "time": 0,
        "annotations": { "percentTime": 0 },
        "counts": { "resultCount": 20 }
      }
    ]
  }
]

响应架构

响应还与此 JSON 架构匹配:

[
  {
    "type": "object",
    "properties": {
      "gremlin": { "type": "string" },
      "totalTime": { "type": "number" },
      "metrics": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "name": { "type": "string" },
            "time": { "type": "number" },
            "annotations": {
              "type": "object",
              "properties": {
                "percentTime": { "type": "number" }
              },
              "additionalProperties": true
            },
            "counts": {
              "type": "object",
              "properties": {
                "resultCount": { "type": "number" }
              },
              "additionalProperties": true
            },
            "storeOps": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "fanoutFactor": { "type": "number" },
                  "count": { "type": "number" },
                  "size": { "type": "number" },
                  "time": { "type": "number" }
                },
                "additionalProperties": true
              }
            }
          },
          "additionalProperties": true
        }
      }
    },
    "required": ["gremlin", "totalTime", "metrics"],
    "additionalProperties": true
  }
]

运营商

Description
GetVertices 此步骤从持久性层获取一组谓词对象。
GetEdges 此步骤获取接近一组顶点的边缘。 此步骤可能会导致一个或多个存储操作。
GetNeighborVertices 此步骤获取连接到一组边缘的顶点。 边缘包含其源顶点和目标顶点的分区键和唯一标识符。
Coalesce 此步骤用于在执行 coalesce() Gremlin 步骤时评估两个操作。
CartesianProductOperator 此步骤计算两个数据集之间的笛卡尔积。 每当使用谓词或使用to()谓词from()时执行。
ConstantSourceOperator 此步骤计算表达式以生成常量值作为结果。
ProjectOperator 此步骤使用上述操作的结果来准备和序列化响应。
ProjectAggregation 此步骤准备并序列化集合操作的响应。