查看: 5684|回复: 20

【大话IT】统计优化

[复制链接]
论坛徽章:
3
优秀写手
日期:2014-12-20 06:00:17喜羊羊
日期:2015-03-04 14:54:422015年新春福章
日期:2015-03-06 11:59:47
发表于 2014-12-15 17:06 | 显示全部楼层 |阅读模式
大侠们,我有个统计的问题困扰我很久了。
我们有一个统计表,10个字段,一个时间字段 ctime.一个数量字段cnt,其他的是8个维度字段。有5个是单值维度地段,比如X001。有3个多值字段,比如X006#X008(用#号隔开).表是按天分区的分区表。数据保留半年。
目前的数据是每天凌晨进入前一天的数据,一天大概50w左右数据。进入后的数据基本是不修改的。
目前我给单值字段建立的本地分区的bitmap函数索引,对于多值字段中维度长度都一样的建立本地分区的substr的bitmap函数索引,对于多值字段维度长度不同的,建立自定义的本地分区的类似substr的函数的bitmap索引。


目前的需求是统计一段时间每种维度的sum(cnt)数量。 统计的过滤条件是时间范围内的0个或9个维度的过滤。

目前的问题是,过滤条件强度不大的情况下下,回表比较多,所以还是比较慢。 大家有什么好的优化方法么? (辅助的优化比如keep pool,sql result cache这些都有做,大家在其他方面有什么好的建议么)


论坛徽章:
737
季节之章:春
日期:2015-07-31 17:16:29ITPUB季度 技术新星
日期:2014-07-17 14:37:00季节之章:秋
日期:2015-07-31 17:16:14季节之章:夏
日期:2015-07-31 17:16:29股神
日期:2014-10-15 09:23:31衰神
日期:2014-10-20 22:47:12季节之章:冬
日期:2015-07-31 17:16:14红钻
日期:2014-12-16 17:51:41洛杉矶湖人
日期:2016-09-23 08:18:15布鲁克林篮网
日期:2016-09-23 08:17:18
发表于 2014-12-15 17:07 | 显示全部楼层
这个帖子太牛逼了

使用道具 举报

回复
论坛徽章:
22
2014年世界杯参赛球队: 哥斯达黎加
日期:2014-06-06 15:02:04沸羊羊
日期:2015-06-17 14:51:07天枰座
日期:2015-07-17 09:51:12金牛座
日期:2016-03-21 21:10:40摩羯座
日期:2016-03-29 15:07:30娜美
日期:2016-06-22 19:49:29奥运会纪念徽章:篮球
日期:2016-09-02 09:45:25奥运会纪念徽章:现代五项
日期:2016-09-23 16:25:05山治
日期:2018-01-04 21:26:162015年新春福章
日期:2015-04-27 10:18:48
发表于 2014-12-15 17:10 | 显示全部楼层

这个帖子太牛逼了

使用道具 举报

回复
论坛徽章:
3
优秀写手
日期:2014-12-20 06:00:17喜羊羊
日期:2015-03-04 14:54:422015年新春福章
日期:2015-03-06 11:59:47
 楼主| 发表于 2014-12-15 17:24 | 显示全部楼层
oracle_cj 发表于 2014-12-15 17:07
这个帖子太牛逼了

刚才按错了,没写完就发表了,大牛看下吧

使用道具 举报

回复
论坛徽章:
737
季节之章:春
日期:2015-07-31 17:16:29ITPUB季度 技术新星
日期:2014-07-17 14:37:00季节之章:秋
日期:2015-07-31 17:16:14季节之章:夏
日期:2015-07-31 17:16:29股神
日期:2014-10-15 09:23:31衰神
日期:2014-10-20 22:47:12季节之章:冬
日期:2015-07-31 17:16:14红钻
日期:2014-12-16 17:51:41洛杉矶湖人
日期:2016-09-23 08:18:15布鲁克林篮网
日期:2016-09-23 08:17:18
发表于 2014-12-15 17:31 | 显示全部楼层
为啥要整bitmap啊。。。。

使用道具 举报

回复
论坛徽章:
3
优秀写手
日期:2014-12-20 06:00:17喜羊羊
日期:2015-03-04 14:54:422015年新春福章
日期:2015-03-06 11:59:47
 楼主| 发表于 2014-12-15 17:33 | 显示全部楼层
oracle_cj 发表于 2014-12-15 17:31
为啥要整bitmap啊。。。。

因为半年数据就接近1亿,一个维度的种类20多种 比较适合bitmap索引去过滤

使用道具 举报

回复
论坛徽章:
3
优秀写手
日期:2014-12-20 06:00:17喜羊羊
日期:2015-03-04 14:54:422015年新春福章
日期:2015-03-06 11:59:47
 楼主| 发表于 2014-12-15 17:46 | 显示全部楼层
我们要统计八种维度,每种维度的查询大概是这样的: select column1,sum(cnt) from tab where ctime between a and b and column='w001' group by column1;
column1代表 维度1字段

使用道具 举报

回复
认证徽章
论坛徽章:
8
宝马
日期:2013-12-30 15:12:362014年新春福章
日期:2014-02-18 16:44:08马上有对象
日期:2014-02-18 16:44:08青年奥林匹克运动会-击剑
日期:2014-08-26 08:46:14马上加薪
日期:2014-12-15 14:55:28马上加薪
日期:2015-01-30 09:13:41美羊羊
日期:2015-03-19 15:04:19水瓶座
日期:2016-01-28 10:23:13
发表于 2014-12-15 17:54 | 显示全部楼层
你那个ctime数据格式是什么?提供一个。还有你怎么分区的。是根据ctime来的吗?

使用道具 举报

回复
论坛徽章:
3
优秀写手
日期:2014-12-20 06:00:17喜羊羊
日期:2015-03-04 14:54:422015年新春福章
日期:2015-03-06 11:59:47
 楼主| 发表于 2014-12-15 18:00 | 显示全部楼层
li0924 发表于 2014-12-15 17:54
你那个ctime数据格式是什么?提供一个。还有你怎么分区的。是根据ctime来的吗?

是,根据ctime按照天范围分区的,ctime的值,精确到天,比如'2014-11-12'

使用道具 举报

回复
论坛徽章:
3
优秀写手
日期:2014-12-20 06:00:17喜羊羊
日期:2015-03-04 14:54:422015年新春福章
日期:2015-03-06 11:59:47
 楼主| 发表于 2014-12-15 19:34 | 显示全部楼层
我刚测试了下联合的btree索引,index(column1,cnt) ,这种索引对于 select column1,sum(counter) from tab where ctime between a and b and column1='x001' group by column1;这种查询很适合,不用回表。

但是对于 select column2,sum(counter) from tab where ctime between a and b and column1='x001' group by column2;不行。(column1代表维度1,column2代表维度2)

  大侠们给点建议吧

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会,7折限时优惠重磅来袭!
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。

限时七折期:2019年8月31日前


----------------------------------------

大会官网>>
TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表