首页 > 代码库 > Kylin查询性能低下原因分析

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查询性能低下原因分析