сталкивался.
Хочу разбить таблицу на партиции по 10.000 записей по UUID. Но он ругается: pg_partman only supports partitioning of data types that are integer or date/timestamp. Supplied column is of type uuid.
Есть вариант как-то это обойти или получить хеш (integer) чтобы по нему партицировать?
Заранее спасибо!
Есть вариант написать patch для pg_partman, если уж лично Вам это нужно. ;)
А какое партицирование по смыслу вы хотите получить? рандомное деление на N партиций или коррелированое со временем создания строки?
Хочу получить деление по 10к строк без учёта времени создания строки)
тогда я бы предложил взять байты 2-3, привести к int — это будет номер партиции байты 0-1 это микросекунды, они могут быть не равномерно рапределены, а всегда 0, например
select ('x0000'||substring(uuid_send('a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'::uuid)::text, 7, 4))::bit(32)::int; вот такая функция, вопрос только какие байты брать (сейчас 2-3), проверьте равномерность распределения на реальных данных
Спасибо большое за помощь!
Обсуждают сегодня