Приложение 7. Ограничения Firebird

We use cookies. Read the Privacy and Cookie Policy

Приложение 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