web-dev-qa-db-fra.com

Les performances de SQLite se dégraderont-elles si la taille de la base de données est supérieure à 2 gigaoctets?

L'année dernière, lorsque j'ai vérifié à propos de SQLite sur leur site Web, la taille de base de données SQLite recommandée était de 2 gigaoctets. Mais maintenant, je n'ai pas pu retrouver cette recommandation.

Est-ce que quelqu'un a essayé de travailler avec une base de données SQLite de plus de 2 gigaoctets en utilisant sa dernière version? Quelle a été la performance de SQLite?

P.S: Je voudrais créer une application mobile qui nécessite une grande base de données (par exemple pour stocker des articles Wikipedia) qui fonctionne localement.

52
Enkhbat

Il n'y a pas de limite de 2 Go.

Les fichiers de base de données SQLite ont une taille maximale d'environ 140 To.

Sur un téléphone, la taille du stockage (quelques Go) limitera la taille de votre fichier de base de données, tandis que la taille de la mémoire limitera la quantité de données que vous pouvez récupérer à partir d'une requête. De plus, Android ont une limite de 1 Mo pour les résultats.


La taille de la base de données n'affectera pas en soi vos performances. Vos requêtes seront rapides tant qu'elles n'accéderont pas à plus de données que ne le permet le cache de pages de la base de données (2 Mo par défaut).

62
CL.

Habituellement, plus la base de données est grande, plus elle contient de données. Plus vous avez de données, plus les recherches peuvent prendre. Ils n'ont pas à le faire, cela dépend d'une recherche.

Quant aux insertions, elles peuvent prendre plus de temps si vous avez plusieurs index sur une table. La reconstruction d'un index peut prendre un certain temps, alors attendez-vous à une dégradation de la vitesse d'insertion avec la quantité de données.

Les mises à jour peuvent également être plus lentes - les lignes d'ajustement doivent être trouvées en premier (recherche), puis les valeurs doivent être modifiées (peuvent déclencher une reconstruction d'index).

Je vous le dis par expérience: si vous attendez beaucoup de données dans votre base de données, envisagez de les diviser en plusieurs bases de données. Cela fonctionne si vos données sont collectées quotidiennement et que vous pouvez créer une base de données pour chaque jour. Peut rendre votre code de recherche plus complexe, mais accélérera les choses pour des recherches limitées /

24
Dariusz