Ограничения QHB

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

Таблица 1. Ограничения QHB

ПараметрВерхний пределКомментарий
размер базы данныхбез ограничений
количество баз данных4 294 950 911
отношения в базе данных1 431 650 303
размер отношения32 ТБсо значением BLCKSZ по умолчанию, равным 8192 байта
строк в таблицеограничено количеством кортежей, которое может уместиться на 4 294 967 295 страниц
столбцов в таблице1600дополнительно ограничено размером кортежа, который может уместиться на одной странице; см примечание ниже
размер поля1 ГБ
длина идентификатора63 байтаможно увеличить, перекомпилировав QHB
индексов на таблицубез ограниченийограничен максимальным количеством отношений в базе данных
столбцов на индекс32можно увеличить, перекомпилировав QHB
ключи раздела32можно увеличить, перекомпилировав QHB

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

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