Ограничения Pangolin#

Примечание

Эта страница переведена нейросетью GigaChat.

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

Элемент

Верхний предел

Комментарий

Размер базы данных

Неограниченный

Количество баз данных

4,294,950,911

Отношений на базу данных

1,431,650,303

Размер отношения

32 ТБ

С настройками по умолчанию BLCKSZ 8192 байта

Строки на таблицу

Ограничено количеством кортежей, которые могут поместиться на 4,294,967,295 страниц

Колонки на таблицу

1 600

Дополнительно ограничено размером кортежа, который помещается на одной странице; см. примечание ниже

Столбцы в результирующем наборе

1,664

Размер поля

1 ГБ

Индексы на таблицу

Неограниченно

Ограничено максимальным количеством связей на базу данных

Колонки на индекс

32

Может быть увеличено путем перекомпиляции Pangolin

Ключи раздела

32

Может быть увеличено путем перекомпиляции Pangolin

Длина идентификатора

127 байт

Может быть увеличена путем перекомпиляции Pangolin

Аргументы функции

100

Может быть увеличено путем перекомпиляции Pangolin

Параметры запроса

65,535

Максимальное количество столбцов для таблицы дополнительно ограничено, так как кортеж, который хранится, должен помещаться на одной странице кучи размером 8192 байта. Например, исключая заголовок кортежа, кортеж, состоящий из 1600 столбцов типа int, займет 6400 байт и может быть размещен на странице кучи. Однако кортеж из 1600 столбцов типа bigint займет 12800 байт и, следовательно, не поместится на странице кучи. Переменные поля типов, таких как text, varchar и char, могут хранить свои значения вне строки в TOAST-таблице, если значения достаточно велики для этого. Внутри кортежа в таблице кучи остается только 18-байтовый указатель. Для переменных полей меньшей длины используется либо 4-байтовый, либо 1-байтовый заголовок поля, а значение хранится внутри кортежа в куче.

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

Каждая таблица может хранить теоретический максимум 2^32 значений вне строки; подробное обсуждение хранения вне строки см. в разделе «TOAST». Это ограничение возникает из-за использования 32-битного OID для идентификации каждого такого значения. Практический лимит значительно меньше теоретического, так как по мере заполнения пространства OID поиск свободного OID может стать дорогостоящим, что, в свою очередь, замедляет выполнение операторов INSERT и UPDATE. Обычно это становится проблемой только для таблиц, содержащих многие терабайты данных; возможным решением является партиционирование.