Перейти к основному содержимому

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

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

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

Сравнительная таблица систем хранения больших объектов

Таблица ниже предоставляет детальный сравнительный анализ различных систем хранения больших объектов (LOB) в базах данных: Oracle BLOB/CLOB, Large Object и TOAST.

Предупреждение!

Защита таблиц, содержащих ссылки на LOB или BFILE, не распространяется на сами объекты LOB или BFILE.

Характеристика

Oracle BLOB/CLOB

Large Object

TOAST

Хранение

Отдельные табличные пространства

1 таблица

Отдельная схема

Управление системой хранения

Автоматическое

Нет

Автоматическое

Идентификатор объекта

10 байт

4 байта

4 байта

Максимальный размер одного объекта

(4 Гбайта - 1) * DB_BLOCK_SIZE, где DB_BLOCK_SIZE – параметр, определяющий размер блока данных

4 Тбайта

1 Гбайта

Количество объектов

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

2^32

2^32

Общий размер объектов

Не ограничен

32 Тбайта

32 Тбайта для одной пользовательской таблицы

Параллельные операции записи

Да

Нет

Да

Интерфейс

Частично SQL, функциональный

Функциональный

SQL