使用哈希分区

oracle在哈希分区中组织数据的方式并不像在范围分区中那样和业务或逻辑视图紧密联系。因此,哈希分区并不是有效组织历史

数据的方式。然而,哈希分区和范围分区一样,具有可以达到提高性能的特性。例如,分区修剪在数量预期方面是有限的。你仍

然可以使用哈希智能链接,并行索引检索,以及并行DML。
使用哈希分区一般以来以下的原则:
1)提高对大表的可用性和可管理性。
2)避免数据的分区倾斜。哈希分区是有效的分布数据的方式,因为oracle的哈希分区把数据散列到多个分区内,每个分区可以

存储到不同的设备。因此,数据均匀的分布到不同的设备上,有效的提高了I/O的吞吐量。同样,你可以把数据均匀的分布到RAC

的不同的多处理器平台的不同节点上。
3)使用依赖于受限于不同的值或者列表的分区键的分区修剪和分区智能连接是非常重要的。
注:哈希分区中,分区修剪只能使用=或in

如果你增加或者合并一个哈希分区,oracle自动重新组织数据的行,以反映分区和子分区数量的变化。oracle使用的哈希函数有

效的节约了这种重组数据的消耗。oracle使用‘增加分区’的逻辑来分割一个已经存在的哈希分区,而不是对表内的所有行进行

改组。相反的,oracle使用合并两个既有哈希分区的方式来合并分区。可以
虽然哈希函数使用‘增加分区’逻辑自动提高哈希分区表的可管理性,这意味着如果分区的数量或者复合分区内每个分区的子分

区的数量不是2的次方,哈希函数可以产生分区偏斜。最坏的情况是,最大的分区可以是最小分区的大小的2倍。所以,为了更好

的提高性能,创建2的次方个分区或子分区。例如2,4,8,16,32,64,128等等。
这里提供一个创建哈希分区的例子:
CREATE TABLE sales_hash
  (s_productid  NUMBER,
   s_saledate   DATE,
   s_custid     NUMBER,
   s_totalprice NUMBER)
PARTITION BY HASH(s_productid)
PARTITIONS 4;
可以自己定义分区的名字,否则,oracle会给定内部定义的分区名。同样,你可以使用store in子句指定哈希分区使用时间轮转

的方式存储在相应的表空间。

 

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

转载于:http://blog.itpub.net/7353848/viewspace-672859/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值