Подтвердить что ты не робот

Существует ли ограничение на размер базы данных SQLite?

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

4b9b3361

Ответ 1

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

Файл базы данных 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 для вашего приложения. Насколько мне известно, нет никакого способа установить лимит программно иначе, чем во время компиляции (но я был бы счастлив, если бы ошибался).

Ответ 2

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

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

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

Ответ 3

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

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

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

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

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

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

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

Ответ 4

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

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

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