SQLite peut lire des petits blobs (par exemple des aperçus d’images) à une vitesse 35 % plus rapide que les mêmes blobs peuvent être lus ou écrits dans des fichiers individuels en utilisant fread() ou fwrite(). De plus, une seule base de données SQLite contenant 10 kilobytes de blobs occupe 20 % moins d’espace sur disque que si elle stocke des blobs dans des fichiers individuels.
Cette différence de performance provient selon les auteurs du fait que les appels open() et close() sont invoqués une seule fois quand le travail est fait à partir d’une base de données SQLite. Alors que open() et close() sont invoqués une fois pour chaque blob quand ces blobs sont stockés dans des fichiers individuels. La réduction de la taille de l’espace du disque occupée provient elle du fait que les blobs sont rangés de façon compacte dans une base de données SQLite.
Ces mesures qui ont été réalisées durant la première semaine de ce mois et concernent toutes les versions entre 3.19.2 et 3.20.0. Le chiffre de 35 % reste approximatif, en effet, la vitesse peut varier d’une machine à une autre et selon l’OS. Quelques utilisateurs ont rapporté que SQLite a une latence plus importante que l’I/O direct dans leurs systèmes.
SQLite fait partie des bases de données les plus utilisées de la planète. Elle est réputée par sa facilité d’utilisation et sa qualité excellente. Contrairement aux serveurs de bases de données traditionnels, comme MySQL ou PostgreSQL, sa particularité est de ne pas reproduire le schéma habituel client-serveur, mais d'être directement intégrée aux programmes. L'intégralité de la base de données (déclarations, tables, index et données) est stockée dans un fichier indépendant de la plateforme.
Les auteurs des tests ont trouvé les résultats suivants :
- SQLite est plus compétitive et généralement plus rapide que les blobs stockés en fichiers séparés sur disque, que ça soit pour la vitesse de lecture et d’écriture ;
- SQLite est beaucoup plus rapide que les écritures directes sur disque quand la protection antivirus est activée sur Windows. Puisque l’antivirus est installé par défaut sur Windows, cela veut dire que SQLite est généralement plus rapide que les écritures directes sur l’OS de Microsoft ;
- La lecture est plus rapide que l’écriture pour tous les systèmes (la différence est d’un ordre de magnitude) ;
- La performance I/O varie largement selon le système d’exploitation et le matériel ;
- D’autres vendeurs de moteurs de bases de données préconisent à ce que les développeurs stockent les blobs dans des fichiers séparés, puis stocker le nom de fichier dans la base de données. Dans ce cas, la base de données doit être consultée au préalable pour trouver le nom de fichier avant de l’ouvrir et le lire. Mais le fait de simplement stocker le blob entier dans la base de données permet une performance de lecture et d’écriture meilleure avec SQLite.
Source : sqlite.org
Et vous ?
Qu'en pensez-vous ?