Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

54011 1С:Предприятие и СУБД

PostgreSQL Error 54011 too_many_columns: Лимиты и Решения

Обновлено: 26.08.2026 · Официальная документация ↗
  • Ошибка DDL/DML: ERROR: 54011: tables can have at most 1600 columns.
  • Ошибка при создании широких временных таблиц: target lists can have at most 1664 entries.
  • Сбой реструктуризации метаданных в 1С:Предприятие при добавлении новых реквизитов в крупные документы или справочники.
  • Отказ выполнения аналитических запросов с множеством вычисляемых полей.

1. Архитектурные ограничения PostgreSQL на количество колонок

В PostgreSQL действует жесткий фундаментальный предел: не более 1600 столбцов на одну физическую таблицу (фактическое число может быть меньше в зависимости от типов данных из-за лимита заголовка кортежа корзины кортежей).

2. Проблема 'мертвых' (удаленных) колонок (Dropped Columns)

В PostgreSQL при выполнении ALTER TABLE DROP COLUMN колонка не удаляется физически из системного каталога, а лишь помечается как удаленная, продолжая учитываться в общем лимите 1600 столбцов!

Проверьте реальное количество активных и скрытых колонок:

SELECT count(*) AS total_internal_columns,
       count(*) FILTER (WHERE NOT attisdropped) AS active_columns,
       count(*) FILTER (WHERE attisdropped) AS dropped_columns
FROM pg_attribute
WHERE attrelid = 'my_large_table'::regclass;

3. Очистка удаленных колонок через VACUUM FULL / pg_repack

Чтобы сбросить счетчик удаленных колонок и вернуть структуру к фактическому числу полей, выполните полную перестройку таблицы:

-- Внимание: блокирует таблицу на запись (Exclusive Lock)
VACUUM FULL my_large_table;

-- Альтернатива без длительной блокировки (через утилиту pg_repack):
-- pg_repack -t my_large_table -d enterprise_db

4. Рефакторинг широких таблиц в 1С и реляционных моделях

  • Переход на EAV / JSONB: Вынесите редко используемые или динамические реквизиты в одно поле типа jsonb.
  • Вертикальное шардирование: Разбейте широкую сущность на две связанные таблицы по первичному ключу 1-к-1 (например, orders_main и orders_extended_specs).
  • Табличные части в 1С: Перенесите избыточные реквизиты шапки документа в подчиненные табличные части.
💡 Практика специалистов: Если вы часто добавляете и удаляете реквизиты в 1С, счетчик колонок в PostgreSQL может исчерпаться даже при 100 видимых реквизитах. Регулярно запускайте VACUUM FULL или pg_repack на активно изменяемых таблицах метаданных.

Частые вопросы (FAQ)

Почему лимит составляет именно 1600 колонок?

Это ограничение заложено в константу MaxTupleAttributeNumber ядра PostgreSQL и связано с размером битовой карты null-значений (Null Bitmap) в заголовке строки на странице памяти 8KB.

Можно ли перекомпилировать PostgreSQL для увеличения лимита колонок?

Теоретически константу можно изменить в исходном коде, но это сломает бинарную совместимость со всеми расширениями, снизит производительность сканирования строк и может привести к повреждению данных.

Как 1С:Предприятие реагирует на превышение лимита колонок?

Платформа выдает ошибку реструктуризации базы данных при обновлении конфигурации. Для исправления требуется удаление неиспользуемых реквизитов и выполнение сжатия таблиц через 'Тестирование и исправление'.

Учитываются ли системные колонки (ctid, xmin, xmax) в этом лимите?

Да, системные атрибуты имеют отрицательные номера и занимают слоты в заголовке кортежа, немного уменьшая максимально доступное число пользовательских полей.

Полезные материалы
Рекомендуем