本文介绍E-MapReduce Serverless StarRocks提供的健康报告内容,并通过示例阐明其潜在的应用场景。该健康报告提供了前一天(T+1)的数据,并包括SQL查询、表分析和导入任务三个核心部分。
查看健康报告
进入EMR Serverless StarRocks实例列表页面。
在左侧导航栏,选择
。在顶部菜单栏处,根据实际情况选择地域。
单击目标实例ID。
单击健康报告页签。
在健康报告页面,您可以查看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等原因。
涉及字段说明如下。
字段
说明
参数化SQL ID
参数化SQL的哈希值,用于标记参数化SQL。
查询时间变异系数
SQL查询执行时间标准差与其平均值的比值。通常变异系数越大,代表同类SQL每次执行的时间差别越大。
执行次数
参数化SQL的总执行次数。
参数化SQL文本
参数化后的SQL文本语句。
通过执行失败次数查找对应的SQL失败原因,来发现潜在的问题。
涉及字段说明如下。
字段
说明
参数化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的表进行优化处理,以改善整体集群性能。
主要字段说明如下。
字段 | 说明 |
表集合 | 记录导入任务可能同时写入的所有相关表信息,表现为一个包含多个表的集合。 |
表类型 | 用于区分不同类型的表,主要分为主键表和非主键表两类。非主键表包括明细表、聚合表和更新表。 |
小文件影响得分 | 通过算法评估潜在小文件问题的影响得分,评分值越高代表潜在的小文件问题越严重。 |
更新的数据分桶数 | 统计在导入任务过程中涉及到的需要更新的Tablet的总量。 |
写入文件数 | 写入的Segment文件的总数量。 |
平均写文件大小 | 总写入数据大小除以写入文件总数,用以表示每个文件的平均写入数据量。 |
平均写文件耗时 | 文件写入总耗时除以文件总数,反映了每次文件写入操作的平均所需时间。 |
Top导入热表分析
按表粒度对导入任务数量进行排序并选取Top 20的表,这些表的导入任务执行最为频繁且涉及的数据导入事务最多。
导入热节点分析
可以通过对各节点的统计数据进行导入,来分析数据的均衡度。例如,您可以从写入总大小指标分析各个broker的写入是否均衡。