管理健康报告

本文介绍E-MapReduce Serverless StarRocks提供的健康报告内容,并通过示例阐明其潜在的应用场景。该健康报告提供了前一天(T+1)的数据,并包括SQL查询、表分析和导入任务三个核心部分。

查看健康报告

  1. 进入EMR Serverless StarRocks实例列表页面。

    1. 登录E-MapReduce控制台

    2. 在左侧导航栏,选择EMR Serverless > StarRocks

    3. 在顶部菜单栏处,根据实际情况选择地域。

  2. 单击目标实例ID。

  3. 单击健康报告页签。

    健康报告页面,您可以查看SQL查询、表分析和导入任务等报表。

SQL查询

该页面展示了SQL查询分析参数化SQL分析两部分内容。您可以通过选择特定的日期SQL类型,按照天来查看不同SQL类型的TOP SQL指标。

支持以下SQL类型:

  • DML:用于数据的查询和变更操作。例如,SELECT、UPDATE、DELETE等语句。

  • DDL:用于定义和修改数据结构的语句。例如,CREATE、ALTER等。

  • 其他:包括非DML和DDL类的SQL命令。例如,SHOW等辅助命令语句。

SQL查询分析

该部分内容是对StarRocks执行的SQL语句的查询时间、CPU消耗以及内存消耗等维度进行排序,从而获取TOP SQL并展现相应的执行指标。您可以基于这些指标对潜在的性能问题进行优化。 例如,可以从慢SQL Top10中查看指定日期日执行时间最长的10条SQL语句。然后,根据Profile查询分析提供的详细信息来优化这些慢执行的SQL语句,Profile分析详情请参见Query Profile介绍

报表主要字段说明如下。

字段名称

说明

查询ID

StarRocks中每次SQL执行产生的唯一标识符。每一次SQL执行都会生成新的ID。

用户

执行SQL的StarRocks数据库用户。

查询时间

SQL执行过程中消耗的时间。单位:ms。

CPU执行时间

SQL执行过程中消耗的CPU时间,是所有参与执行的CPU核数的CPU时间汇总。单位:ns。

内存占用

SQL执行过程中消耗的内存。单位:bytes。

扫描字节数

SQL执行过程中访问的数据量大小。单位:bytes。

扫描行数

SQL执行过程中访问的数据行数。

返回行数

SQL执行后返回的结果行数。

SQL文本

被执行的具体SQL语句文本。

参数化SQL分析

参数化SQL是指将SQL语句中的常量替换成?参数,同时保留原有语法结构,并删除注释、调整空格,生成新的SQL语句。参数化SQL将原始SQL的语法结构映射成相同的参数化SQL语句,有助于对同类型的SQL进行综合分析。

例如,对于以下两个SQL语句,当它们经过参数化处理后,它们属于同一类SQL。

  • 原始SQL

    SELECT * FROM orders WHERE customer_id=10 AND quantity>20
    
    SELECT * FROM orders WHERE customer_id=20 AND quantity>100
  • 参数化后SQL

    SELECT * FROM orders WHERE customer_id=? AND quantity>?

参数化SQL分析从SQL执行频次、SQL执行总耗时、SQL耗时离散度、SQL CPU资源总消耗、SQL内存资源总消耗、SQL执行失败频次等维度进行排序,获取相应的TOP SQL并展现相关指标。

通过参数化SQL分析,您可以:

  • 获取StarRocks数据库整体的SQL执行情况。

  • 通过优化执行次数较多、执行时间较长以及CPU和内存消耗较多的SQL,以获取更大的优化收益。

  • 通过查询时间变异系数来衡量SQL执行的时间稳定性,可以发现潜在的性能问题。例如,同类SQL执行时间变长可能是由于数据倾斜、资源不足导致的pending等原因。

    image

    涉及字段说明如下。

    字段

    说明

    参数化SQL ID

    参数化SQL的哈希值,用于标记参数化SQL。

    查询时间变异系数

    SQL查询执行时间标准差与其平均值的比值。通常变异系数越大,代表同类SQL每次执行的时间差别越大。

    执行次数

    参数化SQL的总执行次数。

    参数化SQL文本

    参数化后的SQL文本语句。

  • 通过执行失败次数查找对应的SQL失败原因,来发现潜在的问题。

    image

    涉及字段说明如下。

    字段

    说明

    参数化SQL ID

    参数化SQL的哈希值,用于标记参数化SQL。

    执行失败次数

    参数化SQL执行失败的次数。

    执行次数

    参数化SQL的执行总次数。

    参数化SQL文本

    参数化后的SQL文本语句。

表分析

该页面展示数据表的查询热度、查询SQL类型、数据分布均衡度等相关的指标,为优化数据表提供判断依据。主要指标如下表所示。

指标

说明

SQL执行次数

是指包含这张表的SQL的总执行次数。一般的,表的执行次数越多,越需要对表设计进行精心的优化来改善Starrocks实例的使用。

关联的参数化SQL个数

这里指的是这张表关联了几个参数化SQL。您可以分析表的查询SQL类型模式来优化表的设计。更进一步的,您可以从不同的查询类型中识别共性,看是否需要创建物化视图来加速对这张表中数据的查询。

Tablet数据大小变异系数

是指同一个分区内的tablet数据大小变异系数,代表了一个表的数据的tablet分布均衡程度。计算方式为:同一个分区内tablet数据大小的标准差除以平均值。一般来说,变异系数越大,这个分区越有可能存在数据倾斜的情况。

导入任务

该页面展示导入任务的统计信息,并从多个角度对导入任务进行分析。

说明

目前系统仅能支持统计和分析存算一体实例下的导入任务情况。

Top导入热表潜在小文件分析

针对表级别的数据导入情况,系统将会对每个表的所有导入任务生成的数据文件进行深入分析,以评估其潜在的小文件问题严重程度,并据此计算出一个影响得分。根据该得分从高至低排序,选出Top 20个受小文件问题影响最大的表。小文件问题的存在可能导致查询性能下降以及Compaction操作效率降低。针对此问题,建议您:

  • 结合表的实际数据规模,科学合理地选择分区与分桶的数量,以有效避免小文件问题的发生。

  • 通过适度增大批量处理的规模,可以在提高整体数据处理吞吐量的同时,有效减少对象存储中的小文件数量。

  • 虽然Compaction能够整合数据文件、提升系统性能,但其运行过程中会占用一定的系统资源。因此,在资源较为紧张的情况下,建议适当调整Compaction频率以平衡资源使用效率。

以下是用于评估小文件影响得分的具体算法:

  • 主键表:计算公式为写入文件总数÷写入文件的平均大小。若平均文件大小较小,同时文件数量较多,则表明此类表的小文件问题潜在影响也越大。

  • 非主键表:计算公式改为写入文件总数平均÷写入单个文件所需时间。当平均写入文件耗时较短,同时文件数量较大时,此类表的小文件问题潜在影响也越大。

通过上述算法,我们可以量化表的小文件问题,从而有针对性地对Top 20的表进行优化处理,以改善整体集群性能。

image

主要字段说明如下。

字段

说明

表集合

记录导入任务可能同时写入的所有相关表信息,表现为一个包含多个表的集合。

表类型

用于区分不同类型的表,主要分为主键表和非主键表两类。非主键表包括明细表、聚合表和更新表。

小文件影响得分

通过算法评估潜在小文件问题的影响得分,评分值越高代表潜在的小文件问题越严重。

更新的数据分桶数

统计在导入任务过程中涉及到的需要更新的Tablet的总量。

写入文件数

写入的Segment文件的总数量。

平均写文件大小

总写入数据大小除以写入文件总数,用以表示每个文件的平均写入数据量。

平均写文件耗时

文件写入总耗时除以文件总数,反映了每次文件写入操作的平均所需时间。

Top导入热表分析

按表粒度对导入任务数量进行排序并选取Top 20的表,这些表的导入任务执行最为频繁且涉及的数据导入事务最多。

image

导入热节点分析

可以通过对各节点的统计数据进行导入,来分析数据的均衡度。例如,您可以从写入总大小指标分析各个broker的写入是否均衡。

image