Всегда использовал SERIAL (SEQUENCE), но сейчас задача требует слияния из нескольких раздельно нуменуемых таблиц в одну. Воти думаю - вести на слитой таблице дополнительный нумератор, либо не вести его но зато вставлять гарантирвано непостоояющиеся ключи из раздельных таблиц - а для этого ничего лучше uuid_generate_v*() (дя ключей раздельных таблиц) не видится - гогда ключаеврой столцец слитой талицы модно слить с оным для раздельных таблиц. . Как этот UUID по скорсти выборки - идекированной и неиндексированной, наколько проигрывает BIGINT (sequence) на таблицах 100тыс+ записей ?
И еще - я SEQUNCE недолюбливаю (точнее побаиваюсь), они имеют(проверено на сотнях инсталляций) нехорошую тенденцию "биться" при сбоях питания, притом жестко (невосстанвливаемо через DROP/CREATE sequence)
Добавлено спустя 19 часов 22 минуты 16 секунд:
Что, никто не использовал ?
PostgreSQL: "uuid" или "serial" для ID-поля ?
Модератор: Модераторы
Старые ключи обязательно сохранять в новой таблице?
Может просто создать пустую таблицу и туда INSER из всех "нескольких раздельно нуменуемых таблиц" все кроме ID записи?
ЗЫ. За почти 15 лет использования базы ни разу SERIAL(SEQUENCE) ключи не слетали. И питание вырубали, и ОБЭП налетали...
Может просто создать пустую таблицу и туда INSER из всех "нескольких раздельно нуменуемых таблиц" все кроме ID записи?
ЗЫ. За почти 15 лет использования базы ни разу SERIAL(SEQUENCE) ключи не слетали. И питание вырубали, и ОБЭП налетали...
- debi12345
- долгожитель
- Сообщения: 5761
- Зарегистрирован: 10.05.2006 23:41:15
- Откуда: Ташкент (Узбекистан)
разу SERIAL(SEQUENCE) ключи не слетали
К нас много инсталляций версии 7.2.
У нее нумераторы очень падучие.
Старые ключи обязательно сохранять в новой таблице?
Может просто создать пустую таблицу и туда INSER из всех "нескольких раздельно нуменуемых таблиц" все кроме ID записи?
Интересует возможность следующего упрощения жизни :
из громоздого решения с нумераторами :
Код: Выделить всё
global_id BIGSERIAL UNIQUE: ID в слиянии патишинов
id BIGINT: ID в партишине (нельзя использовать нумератор! придется вести нумерацию внутри партишина вручную)
partition_id INT: номер партишина
UNIQUE INDEX ON (partition_id,id)
в
Код: Выделить всё
global_id UUID UNIQUE DEFAULT uuid_generate_v1(): ID в патришинах и в слиянии