Максимальное количество строк в таблице sqlite - PullRequest
23 голосов
/ 10 октября 2009

Дайте простую таблицу sqlite3 (create table data (key PRIMARY KEY,value)) с размером ключа 256 байт и размером значения 4096 байт. Каково ограничение (игнорируя ограничения дискового пространства) на максимальное количество строк в этой таблице sqlite3? Связаны ли их ограничения с ОС (win32, linux или Mac)

Ответы [ 7 ]

27 голосов
/ 27 февраля 2012

По состоянию на январь 2017 г. на странице sqlite3 ограничения определены практические пределы для этого вопроса на основе максимального размера базы данных, который составляет 140 терабайт:

Максимальное количество строк в таблице

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

Таким образом, при максимальном размере базы данных в 140 терабайт вам посчастливится получить ~ 1 триллион строк, поскольку, если бы у вас действительно была полезная таблица с данными в ней, количество строк было бы ограничено размером данных. Возможно, в базе данных объемом 140 ТБ может быть до 10 миллиардов строк.

13 голосов
/ 21 июня 2012

У меня есть база данных SQLite размером 3,3 ГБ с 25 миллионами строк сохраненных числовых журналов, и я выполняю вычисления на них, она работает быстро и хорошо.

11 голосов
/ 10 октября 2009

В SQLite3 размер поля не фиксирован. Двигатель выделит столько места, сколько необходимо для каждой ячейки .

Ограничения для файлов см. В этом вопросе SO:
Каковы характеристики производительности sqlite с очень большими файлами базы данных?

7 голосов
/ 28 января 2014

У меня есть база данных SQLite объемом 7,5 ГБ, в которой хранится 10,5 миллионов строк. Запросы выполняются быстро, если у вас правильные индексы. Чтобы заставить вставки работать быстро, вы должны использовать транзакции. Кроме того, я обнаружил, что лучше создать индексы после того, как будут вставлены все строки. В противном случае скорость вставки довольно низкая.

4 голосов
/ 10 октября 2009

Ответ, который вы хотите прямо здесь .

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

Максимальный размер страницы sqlite3 db довольно большой, 2 ^ 32768, хотя для этого требуется некоторая настройка. Я предполагаю, что индекс должен указывать номер страницы, но в результате, скорее всего, будет достигнут предел ОС или среды.

2 голосов
/ 10 октября 2009

По существу никаких реальных ограничений

Подробнее см. http://www.sqlite.org/limits.html

0 голосов
/ 27 апреля 2011

Без ограничений, но в основном после определенного момента база данных sqlite станет бесполезной. PostgreSQL является лучшей бесплатной базой данных FAR для огромных баз данных. В моем случае это около 1 миллиона строк на моем компьютере с 64-разрядным четырехъядерным процессором Linux с 8 ГБ ОЗУ и жесткими дисками Raptor. PostgreSQL непобедим даже для настроенной базы данных MySQL. (Опубликовано в 2011 году).

...