Да, это теоретически возможно.Но алгоритмы хеширования существенно рандомизируют поступающие данные.Правила статистики тогда подразумевают, что разделы будут близки по размеру.
Если у вас большие данные, то различия даже в размере всего 1% в размере разделов становятся совершенно маловероятными - при условии, что исходные данныеимеет уникальные значения.
Однако, если исходные данные искажены, то и получающиеся ячейки также могут быть искажены.Например, рассмотрим, есть ли у вас 100 значений, 0-9 встречаются один раз, а 10 встречаются 90 раз.Все 90 строк со значением 10 войдут в один и тот же раздел, поэтому результирующие корзины будут разбалансированы.
Oracle использует функцию ORA_HASH
для принятия решения, какой хеш-раздел использовать.Точный алгоритм этой функции публично не известен.Но в руководстве обсуждаются некоторые свойства этого алгоритма;ORA_HASH
лучше всего работает с уникальными данными, а когда количество сегментов равно степени 2. Если эти условия не выполняются, некоторые разделы могут быть значительно больше других.