performances de SQLite ne bénéficie pas d'insert en vrac. Il suffit d'effectuer les insertions séparément (mais en une seule transaction!) Pour obtenir de très bonnes performances.
Vous pouvez bénéficier de l'augmentation de la taille du cache de page de sqlite; cela dépend du nombre d'index et/ou de l'ordre dans lequel les données sont insérées. Si vous n'avez aucun index, pour une insertion pure, la taille du cache n'aura probablement pas beaucoup d'importance.
Assurez-vous d'utiliser une requête préparée, plutôt que de régénérer un plan de requête dans la boucle la plus interne. Il est extrêmement important d'encapsuler les instructions dans une transaction, car cela évite au système de fichiers de synchroniser la base de données sur le disque - après tout, une transaction écrite est annulée de manière atomique, ce qui signifie que tous les fsync() sont retardés jusqu'à la fin de la transaction. .
Enfin, les index limiteront vos performances d'insertion car leur création est relativement coûteuse. Si vous avez vraiment beaucoup de données et que vous commencez avec une table vide, il peut être utile d'ajouter les index après les données - bien que ce ne soit pas un facteur important. Oh, et vous voudrez peut-être obtenir un de ces SSD Intel X25-E et vous assurer d'avoir un contrôleur AHCI ;-).
Je maintiens une application avec sqlite db avec environ 500000000 lignes (réparties sur plusieurs tables) - dont une grande partie a été insérée en vrac à l'aide de plaine ancienne begin-insert-commit: cela fonctionne bien.
Merci pour l'explication détaillée Eamon. U rock !!! –