Я использую Postgres 11 и хотел бы использовать разделение Ha sh для таблицы, где первичным ключом является UUID. Я понимаю, что мне нужно заранее выбрать количество разделов, и что модуль функции ha sh на первичном ключе будет использоваться для назначения строк каждому разделу.
Примерно так:
CREATE TABLE new_table ( id uuid ) PARTITION BY HASH (id);
CREATE TABLE new_table_0 PARTITION OF new_table FOR VALUES WITH (MODULUS 3, REMAINDER 0);
CREATE TABLE new_table_1 PARTITION OF new_table FOR VALUES WITH (MODULUS 3, REMAINDER 1);
CREATE TABLE new_table_2 PARTITION OF new_table FOR VALUES WITH (MODULUS 3, REMAINDER 2);
В документации упоминается "значение ha sh ключа раздела", но не указывается, как происходит это хеширование. Я хотел бы проверить эту функцию ha sh на моих существующих данных, чтобы увидеть шаблоны распределения для различного числа разделов. Примерно так:
SELECT unknown_partition_hash_function(id) AS hash_value, COUNT(id) AS number_of_records
FROM existing_table
GROUP BY 1
Есть ли способ использовать эту функцию ha sh в операторе SELECT?