在实践中ORACLE数据库hash分区配合local索引会引发性能问题。
通常相关指标为hash分区表不得有本地(local)索引。
Hash分区是通过对分区键运用Hash算法从而决定数据的分区归属。
常用的分区表所具有的优点:如提高数据可用行,减少管理负担,改善语句性能等优点,hash分区同样拥有。此外,由于Hash分区表是按分区键的hash计算结果来决定其分区的,而特定的分区键其hash值是固定的,也就是说Hash分区表的数据是按分区键值来聚集的,同样的分区键肯定在同一分区。
Hash分区表是通过add partition命令来增加分区的。Oracle推荐分区的个数是2的幂,比如,2,8..等等,这样可以确保数据在各个分区中分布比较均匀。当然,如前所述,还需要分区键值是连续分布的,或接近连续分布。
hash分区表不得有本地(local)索引,本地分区索引将降低查询速度。
hash分区与local索引配合效果不佳,hash分区导致查询条件往往难以进行分区消除,配合local索引的情况,则需访问多个local索引段,导致查询的逻辑读、物理读高。建议使用global索引配合hash分区。
更多内容请关注公众号“测试小号等闲之辈”~