Почему для ID выбирают BIGINT и чем он отличается от SERIAL в PostgreSQL?

Размер целого числа и автоматическая генерация — разные свойства. BIGSERIAL, identity-столбцы, последовательности и пропуски идентификаторов.

Короткий ответ

Что ответить на собеседовании

BIGINT — восьмибайтовый целочисленный тип, а SERIAL — сокращение для целочисленного столбца с последовательностью и значением по умолчанию. SERIAL обычно создаёт INTEGER, BIGSERIAL — BIGINT. Большая ёмкость и автогенерация не исключают друг друга: можно использовать BIGINT GENERATED ... AS IDENTITY. Уникальность задаётся отдельным ограничением.

Подробный разбор

Ответ с пояснениями

В вопросе сравниваются разные характеристики: тип хранения и механизм генерации. BIGINT хранит знаковое 64-битное число, но сам по себе не генерирует значения. У INTEGER меньший диапазон; выбор зависит от ожидаемого срока жизни данных, скорости расходования ID и требований интеграций.

SERIAL — не самостоятельный настоящий тип. Это удобная запись, создающая целочисленный столбец, последовательность и значение по умолчанию из неё. SERIAL соответствует INTEGER, BIGSERIAL — BIGINT; см. документацию PostgreSQL.

В новом DDL можно явно разделить свойства:

CREATE TABLE users (
    id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    name TEXT NOT NULL
);

BY DEFAULT допускает явную передачу значения при вставке; ALWAYS задаёт более строгий режим. Отличия описаны в разделе identity columns.

Ни sequence, ни identity не заменяют PRIMARY KEY или UNIQUE. Возможны пропуски, например после отката транзакции; это не счётчик числа строк и не непрерывная нумерация документов.

BIGINT занимает восемь байт вместо четырёх у INTEGER и может увеличить объём данных и индексов; эффект зависит от схемы, выравнивания и структуры индекса. Его выбирают осознанно, учитывая, что поздняя миграция многочисленных внешних ключей тоже может оказаться дорогой. BIGINT не решает автоматически генерацию уникальных ID между независимыми базами.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку