Интернет магазин китайских планшетных компьютеров



Компьютеры - 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:

int 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


<<< SQLyog