全部产品
Search
文档中心

开源大数据平台E-MapReduce:Query Profile介绍

更新时间:Jul 09, 2024

Query Profile记录了查询中涉及的所有工作节点的执行信息。通过Query Profile,您可以进行可视化的分析来快速识别影响StarRocks实例查询性能的瓶颈。

启用Query Profile

如果您当前的实例未启用Query Profile功能,则可以通过将变量enable_profile设置为true以启用Query Profile。

SET enable_profile = true;
说明
  • 仅内核版本为2.5.13及以上版本(2.x系列)或者内核版本为3.1.5及以上版本(3.x系列)时,您可以设置全局开启Profile功能,不会对查询性能产生影响。

  • 如果您的内核版本低于上述提到的版本,强烈建议您先升级到上述版本再开启Query Profile功能,以免对查询性能产生影响。

Query Profile结构

Query Profile由以下五部分组成:

  • Fragment:执行树。一个查询由一个或多个Fragment组成。

  • FragmentInstance:每个Fragment可以有多个实例,每个实例称为FragmentInstance,分别由不同的计算节点来执行。

  • Pipeline:执行链。一个Pipeline由一组首尾相接的Operator 构成。一个FragmentInstance会被拆分成多个 Pipeline。

  • PipelineDriver:一个Pipeline可以有多个实例,每个实例称为PipelineDriver,以充分利用多个计算核心。

  • Operator:算子。一个 PipelineDriver由多个Operator组成。

可视化Query Profile

StarRocks Manager可视化了Query Profile,整个Profile对应一棵树形结构,树的节点代表聚合后的Operator。单击Operator,可以在页面右侧的选项卡中查看其详细信息;未选中Operator时,右侧展示Query的概览信息。

执行概览image

执行概览页面为您展示一些Summary指标,包含执行时间(Execution time)、I/O性能及网络传输数据量等关键信息。

  • Execution time

    指标

    说明

    IO

    所有SCAN节点IO耗时之和。

    LocalDiskReadIOTime

    从本地缓存读取数据产生的I/O耗时。该指标仅适用于存算分离实例。

    RemoteReadIOTime

    从远端OSS读取数据产生的I/O耗时。该指标仅适用于存算分离实例。

    IoSeekTime

    IO Seek寻址过程产生的总耗时。该指标仅适用于存算分离实例。

    Processing

    Operator节点用于记录其执行计算操作的总耗时。

    ExecutionWallTime

    Query执行总耗时。

  • IO

    指标

    说明

    RawRowsRead

    所有SCAN节点实际扫描到的记录行数之和。

    DiskReadBytes

    所有SCAN执行节点读取的压缩后数据总量之和。

    LocalDiskReadBytes

    所有Connector Scan执行节点从本地缓存读取的压缩数据大小之和。该指标仅适用于存算分离实例。

    RemoteReadBytes

    所有Connector Scan执行节点从OSS对象存储读取的压缩数据大小之和。该指标仅适用于存算分离实例。

    ResultRows

    所有SCAN执行节点输出记录条数总和。

    ResultBytes

    所有SCAN执行节点读取的数据总量之和。

  • Network

    指标

    说明

    Bytes sent over network

    所有Exchange执行节点传输的字节总数,对应BytesSent指标。

Operator

单击Operator,可以在页面右侧查看以下内容:

  • 节点页签:展示该Operator的核心指标。

  • 节点详情页签:展示该Operator的所有指标。

  • Pipeline页签:展示该Operator所属Pipeline指标。该页签的指标仅与调度相关,您无需过多关注。

说明
  • Operator花费的时间比例越大,其对应颜色就越深(支持对执行耗时排名前三的节点标注颜色)。您可以借此轻松确认查询的瓶颈。

  • 通过鼠标滚动,或单击放大缩小按钮,可以放大和缩小Profile树。

重要指标

Query级别

  • Summary指标

    指标

    说明

    Total

    查询消耗的总时间,包括Planning、Executing和Profiling阶段的耗时。

    QueryCpuCost

    查询累积CPU使用时间。所有并发进程累加,因此该指标会大于实际的执行时间。

    QueryMemCost

    查询总内存消耗。

    Variables

    查询相关的变量。

  • Pipeline级别

    指标

    说明

    ActiveTime

    Driver执行时间。

    DriverTotalTime

    Driver消耗的总时间。

    PendingTime

    Driver因为输入或者前置条件不满足等待的时间。

Operator级别

  • Operator通用指标和Chunk Accumulate

    指标

    说明

    OperatorTotalTime

    Operator消耗的总时间。

    PushRowNum

    Operator累积输出行数。

    PullRowNum

    Operator累积输入行数。

    PullChunkNum

    Operator累积输入Chunk数。

    PushChunkNum

    Operator累积输出Chunk数。

    PeakMemoryUsage

    Operator最大内存使用量。

  • OLAP Scan Operator

    指标

    说明

    Table

    表名称。

    ScanTime

    Scan累计时间。Scan操作在异步I/O线程池中完成。

    TabletCount

    Tablet数量。

    PushdownPredicates

    下推的谓词数量。

    BytesRead

    读取数据的大小。

    CompressedBytesRead

    读取压缩数据的大小。

    IOTime

    累计I/O时间。

    BitmapIndexFilterRows

    Bitmap索引过滤的数据行数。

    BloomFilterFilterRows

    Bloomfilter过滤的数据行数。

    SegmentRuntimeZoneMapFilterRows

    Runtime Zone Map过滤的数据行数。

    SegmentZoneMapFilterRows

    Zone Map过滤的数据行数。

    ShortKeyFilterRows

    Short Key过滤的数据行数。

    ZoneMapIndexFilterRows

    Zone Map索引过滤的数据行数。

  • Connector Scan Operator

    以下指标是在OLAP Scan Operator的基础上增加的,适用于存算分离实例。

    指标

    说明

    CompressedBytesReadLocalDisk

    从计算节点的本地缓存读取的经过压缩后的数据量。

    CompressedBytesReadRemote

    从OSS读取的经过压缩的数据总量。

    IOTimeLocalDisk

    从本地缓存读取数据时所产生的I/O操作耗时。

    IOTimeRemote

    从OSS读取数据时所产生的I/O操作耗时。

  • Exchange Operator

    • Sink

      指标

      说明

      PartType

      数据分布模式,包括UNPARTITIONED、RANDOM、HASH_PARTITIONED和BUCKET_SHUFFLE_HASH_PARTITIONED。

      BytesSent

      发送的数据大小。

      OverallThroughput

      吞吐速率。

      NetworkTime

      数据包传输时间(不包括接收后处理时间)。

      WaitTime

      由于发送端队列满而导致的等待时间。

      NetworkBandwidth

      网络带宽。

    • Source

      指标

      说明

      SenderWaitLockTime

      等锁时间。

      BytesReceived

      接收的数据大小。

      DecompressChunkTime

      解压时间。

      DeserializeChunkTime

      反序列化时间。

      SenderTotalTime

      发送总时间。

  • Aggregate Operator

    指标

    说明

    GroupingKeys

    GROUP BY列。

    AggregateFunctions

    聚合函数。

    AggComputeTime

    聚合函数计算耗时。

    ExprComputeTime

    表达式计算耗时。

    HashTableSize

    Hash Table大小。

  • Join Operator

    • Probe

      指标

      说明

      DistributionMode

      数据分布模式。

      JoinType

      Join类型。

      OtherJoinConjunctEvaluateTime

      其他JoinConjunct耗时。

      ProbeConjunctEvaluateTime

      Probe Conjunct耗时。

      SearchHashTableTime

      查询Hash Table耗时。

      WhereConjunctEvaluateTime

      Where Conjunct耗时。

    • Build

      指标

      说明

      JoinPredicates

      Join谓词。

      JoinType

      Join类型。

      BuildBuckets

      Hash Table的Bucket数量。

      BuildHashTableTime

      构建Hash Table耗时。

      RuntimeFilterBuildTime

      Runtime Filter构建时间。

      RuntimeFilterNum

      Runtime Filter个数。

      DistributionMode

      数据分布模式。

  • Window Function Operator

    指标

    说明

    ComputeTime

    窗口函数计算耗时。

    PartitionKeys

    分区列。

    AggregateFunctions

    聚合函数。

  • Sort Operator

    指标

    说明

    SortKeys

    排序键。

    SortType

    查询结果排序方式:全排序或者排序Top N个结果。

    MergingTime

    数据合并耗时。

    SortingTime

    数据排序耗时。

  • TableFunction Operator

    指标

    说明

    TableFunctionExecTime

    Table Function计算耗时。

    TableFunctionExecCount

    Table Function执行次数。

  • Project Operator

    指标

    说明

    ExprComputeTime

    表达式计算耗时。

    CommonSubExprComputeTime

    公共子表达式计算耗时。

  • LocalExchange Operator

    指标

    说明

    Type

    Local Exchange类型,包括:Passthrough、Partition以及Broadcast。

    ShuffleNum

    Shuffle数量。该指标仅当Type为Partition时有效。

相关文档

如果您想有效地查看和解读Query Profile以优化StarRocks查询性能,详情请参见Profile性能诊断及优化案例