暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 大多数行将转到一个分区

askTom 2017-02-13
246

问题描述

嗨,

我们有32个分区的哈希分区表,表有2500万条记录。在这种情况下,大多数插入的记录将进入一个分区,1700万将进入一个分区。有没有办法可以控制这一点,以便行分布在分区之间?。可以进行任何形式的表重组以重新分配行吗?

谢谢,
吉里什

专家解答

这听起来像是你选择了一个不合适的键来散列。

通常,哈希分区将被均匀填充,因为哈希键将具有许多不同的值。

例如 (在这种情况下,100,000不同行的8个哈希值)

SQL> select ora_hash(rownum,7), count(*)
  2  from dual
  3  connect by level <= 100000
  4  group by ora_hash(rownum,7)
  5  order by 1;

ORA_HASH(ROWNUM,7)   COUNT(*)
------------------ ----------
                 0      12603
                 1      12575
                 2      12581
                 3      12508
                 4      12342
                 5      12381
                 6      12628
                 7      12382

复制


但是,如果哈希键源不是这样的,例如,没有很多不同的值,那么您可能会出现偏斜,例如

SQL> select ora_hash(mod(rownum,6),7), count(*)
  2  from dual
  3  connect by level <= 100000
  4  group by ora_hash(mod(rownum,6),7)
  5  order by 1;

ORA_HASH(MOD(ROWNUM,6),7)   COUNT(*)
------------------------- ----------
                        2      16666
                        3      33334
                        5      16666
                        6      16667
                        7      16667
复制


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论