欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

数据量达到10亿以下的时候,bi怎么处理

更新时间: 2014-01-05 02:29:20 责任编辑: Author_N1

 

数据量达到10亿以上的时候,BI怎么办?
公司的oracle,数据库做BI,现在的问题是数据量非常大,250G以上,数据量10亿以上。
每天晚上跑ETL和一些存储过程,很多存储过程里面都有对临时表和事实表进行全部删除,插入,数据的动作,速度很慢
早上9点的时候还没有跑完,如果业务部门修改了历史数据,比如09年2月3日的数据,那历史数据都要变,我不知道关于这些大量数据的数据库,如何提高速度,请高人解答。
--参考方法--
250G还算可以,应该是朝九晚五的业务系统。

给几个建议,不过一般来说,应该是已经都这么做了,呵呵:

1:保持数据更新时在数据上打时间戳,只要业务数据发生了写(改)动作,都打上一个时间戳标记变化时间
业务数据应该不会有删除这个说法。
这样抽取数据的时候,只要抽取某一个时间戳后的数据即可。
另外,抽取后的数据带两个戳,一个是抽取时数据带的时间戳,另外就是当前抽取时的时间戳。
这样后面查异常数据的时候好查。

2:“对临时表和事实表进行全部删除”,全部删除不要用Delete,用Truncate table
如果事实表上有索引,写入数据前,先把索引去掉,数据写入后,再重新生成索引
整个过程比带索引写入要快很多

另外就是对数据进行分区。这个应该就更不用说了。。

3:理论上讲,如果单纯的抽取时间过程,能从次日凌晨0:00开始抽,假设抽到7点,那7个小时的时间,可以抽取N亿条数据了。
但是如果抽取后,还带着其他的业务处理,那么时间就拿不准了。
所以建议把抽取和进一步处理分开,先保证在下一个业务区间来临时,把上一业务区间变化的数据抽好,再做其他的处理。这样即使是第2天已经上班业务数据又发生了新的变化,也不会再影响到上一区间的结果。

4:抽取的时候不要一次性全部抽,比如可以分公司(或者地域)区间的,一家公司一家公司抽。
这样的速度一般比一次性全部抽取要快一些。

上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:29:20
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/10434/
本文WWW.DOC100.NET DOC100.NET版权所有。