oracle分区表之hash分区表的使用及扩展?
Hash分区是通过对分区键运用Hash算法从而决定数据的分区归属。
常用的分区表所具有的优点:如提高数据可用行,减少管理负担,改善语句性能等优点,hash分区同样拥有。此外,由于Hash分区表是按分区键的hash计算结果来决定其分区的,而特定的分区键其hash值是固定的,也就是说Hash分区表的数据是按分区键值来聚集的,同样的分区键肯定在同一分区。
Hash分区表是通过add partition命令来增加分区的。Oracle推荐分区的个数是2的幂,比如,2,8..等等,这样可以确保数据在各个分区中分布比较均匀。当然,如前所述,还需要分区键值是连续分布的,或接近连续分布。
增加新分区时,需要将一些原有的数据从旧的分区划分到新的分区中,:如果要增加的分区是第N个分区,大于等于N的最小2的整数幂为M,则当增加第N个分区时,这个分区的数据来源于分区N-M/2。
比如,现在有个Hash分区表共有100个分区,我们想为其增加一个分区,则它是101个分区,即上面公式中的N为101,而大于101的最小2的整数幂为128,则M为128,于是,这个101分区的数据来源就应该是101-128/2=37分区。
换个角度来说,当我们在增加第101分区的时候,是需要锁定37分区的,因为我们需要将该分区中的部分数据插入到新的101分区中。