对于大数据量OLAP系统的一些经验

对于大数据量OLAP系统的一些经验:
1.oracle的CBO影响
oracle的CBO很不稳定,尤其是在有多个索引的干扰之下,oracle自己会选用nested loop来运行。
我们需要在脚本中用hint指定使用哈希连接。
使用方法:select /*+use_hash(a b)*/ a.*,b.* from table_name1 a,table_name2 b
where a.column_name=b.column_name;
有时oracle的CBO甚至会傻到去全扫描数据库索引,然后回表再查出数据。
这是也需要指定不使用索引,或者直接全表扫描
/*+no_index*/ /*+full(table_name)*/
2.nested loop和hash join
对于OLTP系统来说,由于单个select语句很小,而且一般都会有索引,所以两表关联的时候使用nested loop是最好的。
但对于OLAP系统,两表关联的时候应该使用hash join才能查出来数据。
3.大表分拆
对于大数据量hash来说,需要将表大小尽量拆分开,分别进行hash join。
1个1亿条记录的表和另外一个1亿条记录的表进行关联,最好将每个表拆成若干小表,然后再关联,拆分的表个数可以结合下面的PGA对hash join内存支持来进行估算
4.数据库链路
oracle数据库链路很好用,可以在两个数据库之间通过我们熟悉的sql语句来传输数据,而且数据传输效率也很高。
但数据库链路也有很多局限性
第一、不能使用ddl语句
第二、不能使用insert all into这样的语句
第三、不能bulk into
第四、有时候会异常退出(这个和低版本oracle的bug有关)[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/41451/viewspace-1016342/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/41451/viewspace-1016342/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值