Kylin查询性能低下原因分析

Posted 疯吻IT

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kylin查询性能低下原因分析相关的知识,希望对你有一定的参考价值。

在处理指数行情数据时(IDXD),我遇到一个KYLIN性能查询低下的问题,非常奇怪。经过一番研究发现了其中的原因并顺利解决:

症状:

select count(*) from sensitop.idxd where ticker = ‘000300’ and tradedate between ‘2016-01-01’ and ‘2016-07-01‘
很快,不到一秒

select * from sensitop.idxd where ticker = ‘000300’ and tradedate between ‘2016-01-01’ and ‘2016-07-01‘
很慢,要50多秒,有时候还会超时。

分析:

既然count很快,说明检索cube本身是很快的,问题可能出在获取数据上,可能是读取数据的存在问题,需要检查cube的设置

解决:

发现默认情况下,cube中的TRADEDATE字段是dict,当改成date时,性能问题得到解决。

技术分享

?

结论:

这应该是一个反序列化的问题。当检索cube完成之后,得到索引,之后需要从磁盘读取数据并反序列化成对象。针对TRADEDATE,显然dict的encoding和date的encoding存在巨大的性能差异。这一点值得我们注意!

以上是关于Kylin查询性能低下原因分析的主要内容,如果未能解决你的问题,请参考以下文章

Kylin系列-使用Saiku+Kylin构建多维分析OLAP平台

Kylin的入门实战

什么是 Kylin (分布式分析引擎)

MySQL查询性能优化

大数据分析平台Apache Kylin的部署(Cube构建使用)

高性能MySQL——查询性能优化