Есть ли ограничение на размер базы данных SQLite? - PullRequest
30 голосов
/ 06 мая 2010

Я прочитал FAQ по их лимитам, они говорят о многих лимитах, кроме лимита всей базы данных.

Ответы [ 4 ]

40 голосов
/ 06 мая 2010

Это довольно легко вывести из ограничений реализации страница:

Файл базы данных SQLite организован в виде страниц. Размер каждой страницы является степенью 2 между 512 и SQLITE_MAX_PAGE_SIZE. Значение по умолчанию для SQLITE_MAX_PAGE_SIZE - 32768.

...

Параметр SQLITE_MAX_PAGE_COUNT, обычно равный 1073741823, представляет собой максимальное количество страниц, разрешенное в одном файле базы данных. Попытка вставить новые данные, которые приведут к увеличению размера файла базы данных, вернет SQLITE_FULL.

Итак, у нас есть 32768 * 1073741823, что составляет 35 184 372 056 064 (35 триллионов байт)!

Вы можете изменить SQLITE_MAX_PAGE_COUNT или SQLITE_MAX_PAGE_SIZE в исходном коде, но это, конечно, потребует пользовательской сборки SQLite для вашего приложения. Насколько я знаю, нет никакого способа установить предел программно, кроме как во время компиляции (но я был бы рад оказаться ошибочным).

20 голосов
/ 27 августа 2015

У него новые ограничения , теперь ограничение размера базы данных составляет 128 ТБ:

Каждая база данных состоит из одной или нескольких «страниц». В пределах одной базы данных каждая страница имеет одинаковый размер, но разные базы данных могут иметь размеры страниц, равные двум, от 512 до 65536 включительно. Максимальный размер файла базы данных составляет 2147483646 страниц. При максимальном размере страницы 65536 байт это приводит к максимальному размеру базы данных приблизительно 1,4e + 14 байт (140 терабайт, или 128 тибибайт, или 140 000 гигабайт, или 128 000 гибибайт).

Эта конкретная верхняя граница не проверена, поскольку разработчики не имеют доступа к оборудованию, способному достичь этого предела. Тем не менее, тесты подтверждают, что SQLite ведет себя правильно и разумно, когда база данных достигает максимального размера файла базовой файловой системы (который обычно намного меньше максимального теоретического размера базы данных) и когда база данных не может расти из-за исчерпания дискового пространства.

3 голосов
/ 21 декабря 2017

Хотя это старый вопрос, но позвольте мне поделиться своими выводами для людей, которые достигли этого вопроса.

Хотя в документации Sqlite указано, что максимальный размер файла базы данных составляет ~ 140 терабайт, но ваша ОС накладывает свои собственные ограниченияМаксимальный размер файла для любого типа файла.

Например, если вы используете диск FAT32 в Windows, максимальный размер файла, который я мог бы получить для файла базы данных sqLite, составлял 2 ГБ .(По данным сайта Microsoft, ограничение для системы FAT 32 составляет 4 ГБ , но размер моего sqlite db был ограничен 2 ГБ).В то время как в Linux я смог достичь 3 ГБ (где я остановился. Он мог бы достичь большего размера)

ПРИМЕЧАНИЕ: Я написал небольшую Java-программу, которая начнет заполнять sqlite dbот 0 строк и продолжайте заполнять, пока не будет дана команда остановки.

0 голосов
/ 14 сентября 2016

Максимальное количество байтов в строке или BLOB в SQLite определяется макросом препроцессора SQLITE_MAX_LENGTH. Значение этого макроса по умолчанию составляет 1 миллиард (1 тысяча миллионов или 1 000 000 000).

Текущая реализация будет поддерживать только строку или длину BLOB до 231-1 или 2147483647

Значение по умолчанию для SQLITE_MAX_COLUMN - 2000. Вы можете изменить его во время компиляции до значений, равных 32767. С другой стороны, многие опытные разработчики баз данных утверждают, что для хорошо нормализованной базы данных никогда не потребуется более 100 столбцов в стол.

SQLite не поддерживает объединения, содержащие более 64 таблиц.

Теоретическое максимальное количество строк в таблице составляет 2 ^ 64 (18446744073709551616 или около 1,8e + 19). Этот предел недоступен, так как максимальный размер базы данных в 140 терабайт будет достигнут первым.

Максимальный размер БД: 140 терабайт

Пожалуйста, проверьте URL для получения дополнительной информации: https://www.sqlite.org/limits.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...