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存在巨大的性能差异。这一点值得我们注意!

时间: 2024-11-09 20:33:12

Kylin查询性能低下原因分析的相关文章

《高性能MySQL》读书笔记--查询性能优化

对于高性能数据库操作,只靠设计最优的库表结构.建立最好的索引是不够的,还需要合理的设计查询.如果查询写得很糟糕,即使库表结构再合理.索引再合适,也无法实现高性能.查询优化.索引优化.库表结构优化需要齐头并进,一个不落. 6.1 为什么查询速度会慢 通常来说,查询的生命周期大致可以按照顺序来看:从客户端>>服务器>>在服务器上进行解析>>生成执行计划>>执行>>返回结果给客户端.其中执行可以认为是整个生命周期中最重要的阶段,这其中包括了大量为了检索

mysql笔记03 查询性能优化

查询性能优化 1. 为什么查询速度会慢? 1). 如果把查询看作是一个任务,那么它由一系列子任务组成,每个子任务都会消耗一定的时间.如果要优化查询,实际上要优化其子任务,要么消除其中一些子任务,要么减少子任务的执行次数,要么让子任务运行的更快. 2). 通常来说,查询的生命周期大致可以按照顺序来看:从客户端,到服务器端,然后在服务器上进行解析,生成执行计划,执行,并返回结果给客户端.其中"执行"可以认为是整个生命周期中最重要的阶段,这其中包括 大量为了检索数据到存储引擎的调用以及调用后

查询性能优化

查询性能优化 怎么样算查询性能比较好?响应时间短(获取查询数据速度快) 优化数据访问 查询性能低下最基本的原因是访问的数据太多.大部分性能低下的查询都可以通过减少访问的数据量的方式进行优化. 对于低效的查询,我们发现通过下面两个步骤来分析总是很有效: 确认应用程序是否在检索大量超过需要的数据.这通常意味着访问了太多行,但有时候也可能是访问了太多的列. 确认MySQL服务器层是否在分析大量超过需要的数据行. 总结:1.只查询了需要的列2.在满足要求的前提下尽可能扫描少的行 是否向数据库请求了不需要

170727、MySQL查询性能优化

MySQL查询性能优化 MySQL查询性能的优化涉及多个方面,其中包括库表结构.建立合理的索引.设计合理的查询.库表结构包括如何设计表之间的关联.表字段的数据类型等.这需要依据具体的场景进行设计.如下我们从数据库的索引和查询语句的设计两个角度介绍如何提高MySQL查询性能. 数据库索引 索引是存储引擎中用于快速找到记录的一种数据结构.索引有多种分类方式,按照存储方式可以分为:聚簇索引和非聚簇索引:按照数据的唯一性可以分为:唯一索引和非唯一索引:按照列个数可以分为:单列索引和多列索引等.索引也有多

《高性能MySQL》之MySQL查询性能优化

为什么查询会慢? 响应时间过长.如果把查询看做是一个任务,那么它由一系列子任务组成,每个子任务都会消耗一定的时间.如果要优化查询,实际上优化其子任务,要么消除其中一些子任务,要么减少子任务的执行次数,要么让子任务运行得更快. 查询的生命周期: 客户端->服务器->服务器上解析->生成执行计划->执行->返回结果给客户端. 其中”执行”包括大量为了检索数据到存储引擎的调用以及调用后的数据处理,包括排序.分组等. 慢查询:优化数据访问 查询性能低下最基本的原因:访问的数据太多.

SQl语句查询性能优化

[摘要]本文从DBMS的查询优化器对SQL查询语句进行性能优化的角度出发,结合数据库理论,从查询表达式及其多种查询条件组合对数据库查询性能优化进行分析,总结出多种提高数据库查询性能优化策略,介绍索引的合理建立和使用以及高质量SQL查询语句的书写原则,从而实现高效的查询,提高系统的可用性. [关键词]SQL查询语句,索引,性能优化 1.引言 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,索引的运用与复杂视图的编写等体会不出SQL语句各种写法的性能优劣,但是应用系统实际应用后,随

sql 查询慢原因分析

查询速度慢的原因很多,常见如下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应. 3.没有创建计算列导致查询不优化. 4.内存不足 5.网络速度慢 6.查询出的数据量过大(可以采用多次查询,其他的方法降低数据量) 7.锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷) 8.sp_lock,sp_who,活动的用户查看,原因是读写竞争资源. 9.返回了不必要的行和列 10.查询语句不好,没有优化 ●可以通过如下方法来优化查询

sql查询性能分析

SQL查询性能分析 http://blog.csdn.net/dba_huangzj/article/details/7623926 五分钟打造自己的sql性能分析工具 http://www.cnblogs.com/gezifeiyang/p/3403744.html sql查询性能分析,布布扣,bubuko.com

MongoDB 操作手册CRUD 查询性能分析

分析查询性能 explain() cursor方法允许观察查询系统执行的操作.这个方法对于分析高效查询和决定如何使用索引进行查询是十分有用的.这个方法检测的是查询的操作,而不是查询执行时间.因为这个方法尝试多个查询计划,它并不能准确的反映出查询执行时间. 评估一个查询的性能 使用explain()方法,调用find()返回的指针的该方法即可. 例: 在type字段创建索引 db.testData.ensureIndex({'type':1}); 评估一个在type字段上的查询. db.testD