Каков лимит длины для типа данных VARCHAR в PostgreSQL?

«Каков лимит длины для типа данных VARCHAR в PostgreSQL?» — вопрос из категории Базы данных, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В PostgreSQL существуют два основных типа для хранения строк переменной длины:

  • VARCHAR(n) (или CHARACTER VARYING(n)): Строка ограничена n символами (максимум n = 10485760). При попытке вставить более длинную строку возникнет ошибка.
  • TEXT (или VARCHAR без указания длины): Теоретический лимит — около 1 ГБ (ограничено типом varlena). Практически лимитируется максимальным размером страницы (по умолчанию 8 КБ) для inline-хранения.

Пример и рекомендации:

CREATE TABLE example (
    short_code VARCHAR(10), -- Жёсткое ограничение: 10 символов
    description TEXT,       -- Фактически неограниченная длина (1 ГБ)
    flexible VARCHAR        -- Аналогично TEXT, синтаксический сахар
);

Практический совет: В PostgreSQL между VARCHAR(n) и TEXT нет разницы в производительности. VARCHAR(n) обеспечивает проверку целостности данных на уровне БД, а TEXT — более гибкий. Выбор — вопрос соглашений в проекте.