查看原文
其他

【技术贴】Apache Kylin优化神器KyBot:找寻查询瓶颈

apachekylin 2022-04-23



某电商公司运行Apache Kylin超过21个节点,希望通过KyBot诊断集群的健康状态并获取Cube优化建议。KyBot分析了时间跨度为5天的诊断包,涵盖了98个Cube和7000多个Query,通过分析发现了查询的瓶颈并提供了优化方案。


KyBot官方网址:http://kybot.io





概述


Cube 98个,总大小871GB, Cube膨胀率较低;

86%以上的查询都在1秒以内,98%的查询在5秒之内, 平均查询性能较好;

构建耗时中位数在15min以内,属于正常范围。



SQL执行分析


SQL : Select CATEGORY_LV1, sum(order_amt) as order_amt, sum(payment_amt) as payment_amt, sum(discount_amt) as discount_amt, sum(shipping_fee) as shipping_fee, sum(tax_amt) astax_amt, sum(coupon_amt) as coupon_amt, count(distinct CUSTOMER_ID) as uv, count(distinct SHIPPING_AGT_ID) as shipping_agt, count(distinct province_id) as province from t_sales_order WHERE PART_DT > ’20160901’ and  PART_DT < ’20161001’ group by CATEGORY_LV1 order by CATEGORY_LV1


Cube索引匹配度分析


SQL执行过程解析的页面展示了8个维度,表示Cube中8个维度索引参与了SQL执行,但仅PART_DT是有效的过滤维度, CATEGORY_LV1是有效的聚合分组维度,总体匹配度较低(25%)。中间6个维度之所以参与执行,是因为它们被设置成了mandatory 维度,可以考虑取消mandatory设置,或改用joint等类型。

过滤维度PART_DT位于索引组合的末端,且前置维度的基数较大,过滤耗时较长,影响查询效率,建议更新索引维度的排序。



SQL执行生命周期分析


在SQL执行生命周期图中,蓝色是SQL在多个存储节点中的并行查询部分,绿色是SQL在查询节点的执行部分,绿色部分时间较长,说明瓶颈在于查询节点,可以考虑减少数据后聚合压力或增强查询节点性能。



优化操作


添加一个Hierarchy聚合组,包含CATEGORY_LV1 和CATEGORY_LV2, 添加一个Joint聚合组,包含SELLER_ID 和 SHOP_NAME,取消之前的Mondatory聚合组。


优化结果


查询击中了匹配度更高的Cuboid,查询效率显著提升,查询节点运行时间缩短为0.4秒。


客户反馈


"根据KyBot的分析,我们有针对性地对Cube的设计进行了优化,增大了查询节点的内存,对比测试表明查询效率得到了显著的提升,接下来我们会根据进一步的分析,继续优化。"


您可能还会想看


【技术贴】KyBot快速入门指南

【案例分享】Apache Kylin在国美在线的应用

【案例分享】大数据多维分析引擎在魅族的实践

云中麒麟 – Apache Kylin在微软Azure上的实践

Apache Kylin v1.6.0正式发布




↓欢迎点击“阅读原文”进入KyBot网站。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存