Приложение 7. Ограничения Firebird
Приложение 7. Ограничения Firebird
Большинство фактических ограничений Firebird практически шире того, что нужно в программах. Например, вы можете определить до 32 767[169] столбцов в таблице, однако зачем вы будете это делать? В табл. 7.1 представлены теоретические и практические ограничения, применимые к Firebird 1.0.x и 1.5. Некоторые из этих ограничений будут изменены в сторону улучшения в следующих версиях, так что просматривайте заметки по релизу, чтобы отследить изменения.
Таблица П7.1. Ограничения Firebird 1.0.x и 1.5
Объект
Элемент
Firebird 1.0.x
Firebird 1.5
Замечания
Идентификаторы
Почти все объекты
31 символ
31 символ
Нельзя использовать символы вне диапазона US ASCII (ASCIIZ)
Имена ограничений
27 символов
27 символов
Даты
Самые ранние и самые поздние даты
января 100 г.
Самая поздняя
31 декабря 9999 г. Замечание: считается, что сервер может аварийно завершаться, если системная дата на сервере установлена больше, чем 2039[170].
Сервер
Максимальное количество подключенных клиентов[171]
024 (TCP/IP)
024 (TCP/IP)
Теоретическое ограничение меньше для Windows с именованными каналами (NetBEUI) - сервер, скорее всего, зависнет при более чем 930 одновременных соединениях. Практически нормальным будет не более 150 одновременных подключений клиентов Суперсервера при обычных интерактивных приложениях для сервера с низкими спецификациями. Для Классического сервера это количество может быть меньше по причине того, что каждый клиент использует больше ресурсов
Максимальное количество баз данных, открытых в одной транзакции
Количество баз данных, открытых при запуске транзакции с помощью isc_start_multiple(), ограничивается только доступными системными ресурсами. Транзакция, запущенная с помощью isc start transaction(), ограничивает количество одновременно подключенных баз данных 16
База данных
Количество таблиц
32 767
32 767
Максимальный размер
7 Тбайт
7 Тбайт
Приблизительное теоретическое ограничение. Не известна база данных Firebird с таким количеством записей, чтобы ее размер превышал 7 Тбайт
Максимальный размер файла
Зависит от файловой системы. В FAT32 и ext2 2 Гбайт. Более старая NTFS и ext3 обычно дают 4 Гбайт. Многие 64-битовые файловые системы не устанавливают ограничений на размер файла с совместным доступом
Максимальное количество файлов в базе данных
Теоретически 216 (65 536) включая файлы оперативной копии (shadow). Порог будет ниже, если операционная система накладывает ограничения на количество файлов, которое может быть одновременно открыто в одном процессе. Некоторые позволяют увеличить эту границу
Максимальный размер страницы
16 386 байт
16 386 байт
Другими размерами являются 1024, 2048, 4096 (по умолчанию) и 8192 байт
Максимальное количество буферов кэша
65 536 страниц
65 536 страниц
Практическое ограничение зависит от доступного объема RAM. Общий размер (страницы * размер страницы для Суперсервера, страницы * размер страницы * количество одновременных пользователей для Классического сервера) никогда не должен превышать половины доступной памяти RAM. Рассматривайте в качестве практического ограничения 10 000 страниц и увеличивайте или уменьшайте, отходя от этого количества, в соответствии с требованиями производительности
Таблицы
Максимальное количество версий для структуры таблицы
255
255
Firebird сохраняет не более 255 форматов для каждой таблицы. Версия формата увеличивается на 1 каждый раз, когда выполняется изменение метаданных. Когда таблица достигает ограничения, вся база данных становится недоступной - нужно сделать ее резервную копию и выполнить восстановление
Максимальный размер строки
64 Кбайт
64 Кбайт
Подсчитывается в байтах. Столбцы массивов и BLOB каждый занимает 8 байт для хранения идентификатора; VARCHAR - длина в байтах + 2; CHAR - длина в байтах; SMALLINT - 2; INTEGER, FLOAT, DATE и TIME - 4; BIDINT, DOUBLE PRECISION и TIMESTAMP - 8; NUMERIC и DECIMAL - 4 или 8 в зависимости от точности. Системные таблицы имеют ограничение на размер страницы 128 Кбайт
Максимальное количество строк[172]
2(^32^) строки
2(^32^) строки
Больше или меньше. Строки под- считываются с помощью 32-битового беззнакового целого для таблиц и 32-битового для индекса. Таблица с длинной строкой - имеющая много полей или с очень длинными полями - может хранить меньше строк, чем таблица с очень короткими строками. Все строки - включая удаленные - попадают в это число; поля BLOB, хранимые на страницах данных таблицы, также входят в это число
Максимальное количество столбцов
Зависит от используемых типов данных (см. Максимальный размер строки)
Максимальное количество индексов на таблицу
64
256
Максимальный размер внешнего файла
4 Гбайт в Windows NTSF, 2 Гбайт в Windows FAT32, Linux ext2, ext3 и Solaris
Индексы
Максимальный размер[173]
252 байт
252 байт
Этот теоретический максимум применяется к индексу из одного столбца, где набор символов является однобайтовым и использует порядок сортировки по умолчанию (двоичный). Подсчитываются байты, а не символы. Практический максимум уменьшается для составных индексов, многобайтовых наборов символов и сложных порядков сортировки. Например, индекс для одного столбца, использующего 3-байтовые символы UNICODE_FSS, может иметь максимум (253/3) = 84 символа. Некоторые последовательности сортировки для ISO8859 используют до 4 байт на символ только для атрибутов сортировки
Максимальное количество сегментов
16
16
Запросы
Максимальное количество соединяемых таблиц
256
256
Теоретическое ограничение
Максимальное количество вложенных подзапросов
Теоретически предела нет, но большая вложенность подзапросов ухудшает производительность. Производительность и потребление ресурсов определяется практическими лимитами, конкретно для каждого запроса
Максимальный размер столбца, составляющего поля ORDER BY
32 Кбайт
32 Кбайт
Модули PSQL
Максимальный размер BLR
48 Кбайт
48 Кбайт
Текст хранимых процедур и триггеров компилируется в байт-код (BLR), который более компактен, чем исходный текст. Если вы все- таки обнаружили ограничение, попробуйте разбить вашу монументальную процедуру на несколько частей, вызываемых из главной процедуры
Максимальное количество событий в процедуре или триггере
Нет ограничения
Нет ограничения
Практический лимит совпадает с ограничением на размер BLR
Количество рекурсивных вызовов
750 на Windows, 1000 на платформах POSIX
BLOB
Максимальный размер BLOB
Максимум зависит от размера страницы. Для страницы 2 Кбайт максимальный размер - 512 Мбайт. Для 4 Кбайт - 4 Гбайт. Для страниц размера 4 и 8 Кбайт - 32 и 256 Гбайт соответственно
Максимальный размер сегмента
BLOB хранятся посегментно, теоретический максимальный размер которого не более 64 Кбайт. В DSQL нет возможности указать размер сегмента, поскольку его устанавливает клиентская программа или библиотека-компонент, как правило, игнорируя размер сегмента, указанный в определении BLOB