О раздел хэша oracle , часть из справочной документации oracle
После некоторого исследования oracle фактически поддерживает согласованное хеширование по умолчанию для хэширования.Хотя, как это было сделано, пока не опубликовано.Но на самом деле он использует способ HashMap, но скрывает некоторые разделы.Поэтому, когда вы добавляете / удаляете раздел, оракулу очень мало нужно настраивать данные в разных разделах.Алгоритмы обеспечивают только равномерное разбиение данных на разделы с числом чисел, равным 2, например 4. Так что если это не так, то объедините / разделите некоторые разделы.
Магия в том, что если увеличить с четырех разделов до пяти,фактически разбивает один раздел на два.Если уменьшить с четырех разделов на три, он фактически объединяет два раздела в один.
Если у кого-то есть более глубокая проницательность, добавьте более подробный ответ.
Хеш-разделение Хеш-разделение отображает данные в разделы на основе алгоритма хеширования, который Oracle применяет к идентифицируемому вами ключу разделения.Алгоритм хэширования равномерно распределяет строки между разделами, давая разделам примерно одинаковый размер.
Хэш-разбиение является идеальным методом для равномерного распределения данных между устройствами.Хеш-секционирование также является простой в использовании альтернативой секционированию диапазонов, особенно когда данные, подлежащие секционированию, не являются историческими или не имеют явного ключа секционирования.
Примечание:
Вы не можете изменитьАлгоритмы хеширования, используемые при секционировании.
О Хэш-раздел MYSQL , часть из справки mysql doc
Он предоставляет две функции секционирования. Один - это секционирование по HASH.Другой - это разделение по KEY.
Разделение по ключу аналогично разделению по хешу, за исключением того, что, когда разделение хеша использует пользовательское выражение, функция хеширования для разделения ключа предоставляется сервером MySQL.MySQL Cluster использует MD5 () для этой цели;для таблиц, использующих другие механизмы хранения, сервер использует собственную функцию внутреннего хэширования, основанную на том же алгоритме, что и PASSWORD () .Синтаксические правила для CREATE TABLE ... PARTITION BY KEY аналогичны правилам для создания таблицы, которая разделена по хешу.
Основные различия перечислены здесь:
• KEY используется вместо HASH.
• KEY принимает только список из одного или нескольких имен столбцов.Начиная с MySQL 5.1.5, столбец или столбцы, используемые в качестве ключа разделения, должны содержать часть или весь первичный ключ таблицы, если таковой имеется в таблице.
CREATE TABLE k1 (
id INT NOT NULL PRIMARY KEY,
name VARCHAR(20)
)
PARTITION BY KEY()
PARTITIONS 2;
Если первичного ключа нет, но существует уникальный ключ, то для ключа разделения используется уникальный ключ:
CREATE TABLE k1 (
id INT NOT NULL,
name VARCHAR(20),
UNIQUE KEY (id)
)
PARTITION BY KEY()
PARTITIONS 2;
Однако, если столбец уникального ключа былне определен как NOT NULL, тогда предыдущий оператор потерпит неудачу.
Но он не говорит, как разделы будут смотреть в коде.