@artemfisher

Секционирование таблицы по хэшу. В чем принцип?

В официальной документации говорится про секционирование по хэшу. Но подробности не приводятся. Как оно происходит?
Допустим, у меня есть диапазон записей с id от 1 до 10. Я хочу их равномерно разделить на 2 таблицы. Как это сделать с помощью секционирования по хэшу? Не совсем понимаю как распределяются записи в зависимости от модуля и остатка.
  • Вопрос задан
  • 436 просмотров
Решения вопроса 1
Melkij
@Melkij
PostgreSQL DBA
Как-как. Вызывается некоторая хэш-функция для значений ключа партицирования, её результат делится нацело на modulus, строка попадёт в ту партицию, для которой совпадает remainder.

create table part (i int) partition by hash (i);
create table part_0 partition of part FOR VALUES WITH (MODULUS 2, REMAINDER 0);
create table part_1 partition of part FOR VALUES WITH (MODULUS 2, REMAINDER 1);
insert into part select generate_series(1,10);
select * from only part_0;
select * from only part_1;


на слишком малых выборках хэш ожидаемо может быть не столь равномерно распределён.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы