|
|
Компьютеры - SQLite - Ограничения26 апреля 2011
Оглавление: 1. SQLite 2. Ограничения 3. Использование
Старые версии SQLite были спроектированы без каких-либо ограничений, единственным условием было то, чтобы база данных умещалась в памяти, в которой все вычисления производились при помощи 32-разрядных целых чисел. Это создавало определённые проблемы. Из-за того, что верхние пределы не были определены и соответственно должным образом протестированы, то частенько наружу вылезали ошибки при использовании SQLite в достаточно экстремальных условиях. И поэтому, в новых версиях SQLite были введены пределы, которые теперь проверяются вместе с общим набором тестов.
Во время компиляции библиотеки SQLite устанавливаются следующие ограничения, которые можно при острой необходимости увеличивать:
Описание |
Значение |
Константа в исходнике |
Максимальная длина строки или BLOB-поля |
1 000 000 000 |
SQLITE_MAX_LENGTH |
Максимальное количество колонок |
2 000 |
SQLITE_MAX_COLUMN |
Максимальная длина SQL-выражения |
1 000 000 |
SQLITE_MAX_SQL_LENGTH |
Максимальное количество таблиц в выражениях с JOIN |
64 |
Максимальная глубина дерева выражений |
1 000 |
SQLITE_MAX_EXPR_DEPTH |
Максимальное количество аргументов функции |
100 |
SQLITE_MAX_FUNCTION_ARG |
Максимальное количество термов в объединённом выражении с SELECT |
500 |
SQLITE_MAX_COMPOUND_SELECT |
Максимальная длина шаблона как аргумента операторов LIKE или GLOB |
50 000 |
SQLITE_MAX_LIKE_PATTERN_LENGTH |
Максимальное количество символов-заменителей в одном SQL-выражении |
999 |
SQLITE_MAX_VARIABLE_NUMBER |
Максимальная глубина рекурсии триггеров |
1 000 |
SQLITE_MAX_TRIGGER_DEPTH |
Максимальное количество присоединённых баз |
10 |
SQLITE_MAX_ATTACHED |
Максимальный размер страницы базы данных |
32 768 |
SQLITE_MAX_PAGE_SIZE |
Максимальное количество страниц в файле базы данных |
1 073 741 823 |
SQLITE_MAX_PAGE_COUNT |
На текущий момент только значение SQLITE_MAX_PAGE_SIZE не может быть больше заданного по умолчанию. Таким образом, не изменяя SQLITE_MAX_PAGE_COUNT, можно сказать, что максимальный размер файла базы данных составляет примерно 32 ТБ.
Некоторые ограничения можно менять в сторону уменьшения во время исполнения программы при помощи задания категории и соответствующего значения функции sqlite3_limit:
Категория |
Описание |
SQLITE_LIMIT_LENGTH |
Максимальная длина любой строки или BLOB-поля или ряда |
SQLITE_LIMIT_SQL_LENGTH |
Максимальная длина SQL-выражения |
SQLITE_LIMIT_COLUMN |
Максимальное количество колонок в определении таблицы или результате выборки, или индексе, или выражениях с операторами ORDER BY или GROUP BY |
SQLITE_LIMIT_EXPR_DEPTH |
Максимальная глубина разобранного дерева любого выражения |
SQLITE_LIMIT_COMPOUND_SELECT |
Максимальное количество термов в объединённом выражении с SELECT |
SQLITE_LIMIT_VDBE_OP |
Максимальное количество инструкций программы виртуальной машины выполняемого SQL-выражения |
SQLITE_LIMIT_FUNCTION_ARG |
Максимально количество аргументов функции |
SQLITE_LIMIT_ATTACHED |
Максимальное количество присоединённых баз |
SQLITE_LIMIT_LIKE_PATTERN_LENGTH |
Максимальная длина шаблона как аргумента операторов LIKE или GLOB |
SQLITE_LIMIT_VARIABLE_NUMBER |
Максимальное количество переменных в SQL-выражении, которые можно связать |
SQLITE_LIMIT_TRIGGER_DEPTH |
Максимальная глубина рекурсии триггеров |
Это может быть полезным, если SQLite используется в веб-приложениях, так как уменьшенные пределы могут предотвратить DoS-атаки со стороны недоверяемых внешних клиентов.
Просмотров: 2984
|