Максимальное количество строк в таблице sqlite
Дайте простую таблицу sqlite3 (create table data (key PRIMARY KEY,value)
) с размером ключа 256 байт и значением 4096 байт, каково ограничение (игнорируя ограничения дискового пространства) на максимальное количество строк в этой таблице sqlite3? Связаны ли их ограничения с ОС (win32, linux или Mac)
7 ответов
В SQLite3 размер поля не фиксирован. Двигатель выделит столько места, сколько необходимо для каждой ячейки.
Ограничения для файлов см. В этом вопросе:
Каковы характеристики производительности sqlite с очень большими файлами базы данных?
По состоянию на январь 2017 года страница ограничений sqlite3 определяет практические ограничения для этого вопроса на основе максимального размера базы данных, который составляет 140 терабайт:
Максимальное количество строк в таблице
Теоретическое максимальное количество строк в таблице составляет 2^64 (18446744073709551616 или около 1,8e+19). Этот предел недоступен, так как максимальный размер базы данных в 140 терабайт будет достигнут первым. База данных объемом 140 терабайт может содержать не более 1e + 13 строк, и только в том случае, если индексов нет и каждая строка содержит очень мало данных.
Таким образом, при максимальном размере базы данных в 140 терабайт вам посчастливится получить ~ 1 триллион строк, поскольку, если бы у вас действительно была полезная таблица с данными в ней, количество строк было бы ограничено размером данных. Возможно, в базе данных объемом 140 ТБ может быть до 10 миллиардов строк.
У меня есть база данных SQLite размером 3,3 ГБ с 25 миллионами строк хранимых числовых журналов, и я выполняю вычисления на них, она работает быстро и хорошо.
У меня есть база данных SQLite 7.5 ГБ, которая хранит 10,5 миллионов строк. Запросы выполняются быстро, если у вас правильные индексы. Чтобы заставить вставки работать быстро, вы должны использовать транзакции. Кроме того, я обнаружил, что лучше создавать индексы после того, как все строки были вставлены. В противном случае скорость вставки довольно низкая.
Ответ вы хотите прямо здесь.
Каждая упомянутая вами ОС поддерживает несколько типов файловых систем. Фактические ограничения будут для каждой файловой системы, а не для каждой ОС. Сложно суммировать матрицу ограничений для SO, но в то время как некоторые файловые системы накладывают ограничения на размеры файлов, сегодня все основные ядра ОС поддерживают файловую систему с очень большими файлами.
Максимальный размер страницы sqlite3 db довольно большой, 2^32768, хотя это требует некоторой настройки. Я предполагаю, что индекс должен указывать номер страницы, но в результате, скорее всего, будет достигнут предел ОС или среды.
По существу никаких реальных ограничений
см. http://www.sqlite.org/limits.html для получения подробной информации
Нет ограничений, но в основном после определенного момента база данных sqlite станет бесполезной. PostgreSQL является лучшей бесплатной базой данных FAR для огромных баз данных. В моем случае это около 1 миллиона строк на моем компьютере с 64-разрядным четырехъядерным процессором Linux с 8 ГБ ОЗУ и жесткими дисками Raptor. PostgreSQL непобедим даже для настроенной базы данных MySQL. (Опубликовано в 2011 году).