Ограничения Pangolin
В таблице ниже описаны различные жесткие ограничения 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
. Обычно это становится проблемой только для таблиц, содержащих многие терабайты данных; возможным решением является партиционирование.