web-dev-qa-db-fra.com

Nombre maximum de lignes dans une table sqlite

Donnez une table sqlite3 simple (create table data (key PRIMARY KEY,value)) avec une taille de clé de 256 octets et une taille de valeur de 4096 octets, quelle est la limite (en ignorant les limites d'espace disque) sur le nombre maximal de lignes de cette table sqlite3? Leurs limites sont-elles associées au système d'exploitation (win32, linux ou Mac)

25
volatilevoid

Dans SQLite3, la taille du champ n'est pas fixe. Le moteur engagera autant d'espace que nécessaire pour chaque cellule .

Pour les limites de fichiers, consultez cette SO question:
Quelles sont les caractéristiques de performance de sqlite avec de très gros fichiers de base de données?

13
Nick Dandoulakis

Depuis janvier 2017, la page des limites de sqlite définit les limites pratiques de cette question en fonction de la taille maximale de la base de données qui est de 140 téraoctets:

Nombre maximum de lignes dans une table

Le nombre maximum théorique de lignes dans un tableau est de 2 ^ 64 (18446744073709551616 ou environ 1,8e + 19). Cette limite est inaccessible car la taille maximale de la base de données de 140 téraoctets sera atteinte en premier. Une base de données de 140 téraoctets ne peut contenir plus d'environ 1e + 13 lignes, et seulement s'il n'y a pas d'index et si chaque ligne contient très peu de données.

Donc, avec une taille de base de données maximale de 140 téraoctets, vous auriez la chance d'obtenir ~ 1 billion de lignes, car si vous aviez réellement une table utile contenant des données, le nombre de lignes serait limité par la taille des données. Vous pourriez probablement avoir jusqu'à 10s de milliards de lignes dans une base de données 140 TB.

28
aculich

J'ai une base de données SQLite de 3,3 Go avec 25 millions de lignes de journaux numériques stockés et faisant des calculs dessus, cela fonctionne bien et rapidement.

15
John

J'ai une base de données SQLite de 7,5 Go qui stocke 10,5 millions de lignes. L'interrogation est rapide tant que vous disposez d'index corrects. Pour que les insertions s'exécutent rapidement, vous devez utiliser des transactions. De plus, j'ai trouvé qu'il était préférable de créer les index après toutes les lignes ont été insérées. Sinon, la vitesse d'insertion est assez lente.

7
Fidel

La réponse que vous voulez est ici .

Chaque système d'exploitation que vous avez mentionné prend en charge plusieurs types de système de fichiers. Les limites réelles seront par système de fichiers et non par système d'exploitation. Il est difficile de résumer la matrice de contraintes sur SO, mais bien que certains systèmes de fichiers imposent des limites sur les tailles de fichiers, tous les principaux noyaux de système d'exploitation prennent en charge aujourd'hui un système de fichiers avec des fichiers extrêmement volumineux.

La taille de page maximale d'une base de données sqlite3 est assez grande, 2 ^ 32768, bien que cela nécessite une configuration. Je présume qu'un index doit spécifier un numéro de page, mais le résultat est probablement qu'une limite de système d'exploitation ou d'environnement est atteinte en premier.

4
DigitalRoss

Essentiellement aucune limite réelle

voir http://www.sqlite.org/limits.html pour plus de détails

2
Martin Beckett

Pas de limites, mais fondamentalement après un certain point, la base de données sqlite deviendra inutile. PostgreSQL est la première base de données gratuite PAR LOIN pour les énormes bases de données. Dans mon cas, c'est environ 1 million de lignes sur mon ordinateur à double processeur Linux 64 bits Quad Core avec 8 Go RAM et disques durs Raptor. PostgreSQL est imbattable, même par une base de données MySQL optimisée. ( Publié en 2011).

0
Erick