SQLite est une petite base de données, mais j'ai un problème avec Windows. L'exécution d'une requête sur une base de données de 100 Mo peut prendre jusqu'à 50 secondes lors du premier lancement de l'application. Les charges subséquentes prennent 10% de ce temps.Windows Pre-Caching SQLite problème
Après quelques discussions sur la liste de diffusion de données SQLite, on me dit « Le bogue est dans Windows agressivement les fichiers de base de données pré-caches grands
-. Lit dans de gros morceaux de fichiers - pour le faire paraître comme si les programmes
comme Outlook sont meilleurs qu'ils ne le sont vraiment. Malheureusement, bien que
cela accélère certains programmes, il fait d'autres agissent saccadés parce qu'ils
ont aucun contrôle sur la quantité est lu quand ils demandent seulement quelques
octets fichier."
Ce problème est aggravé car il n'y a aucun moyen d'obtenir des informations de progression pendant que tout cela se produit à partir de SQLite, donc mes utilisateurs pensent que quelque chose est cassé. (Je pourrais afficher un rapport de progression fictif, mais c'est vraiment ringard pour un outil pointu.)
Je crois qu'il existe un moyen d'arrêter la pré-mise en cache globalement, mais est-ce qu'il y a un moyen de contourner ce programme?
Certainement. J'ai travaillé avec des bases de données sqlite de taille similaire et je n'ai pas rencontré ce problème. –
Oui, je pense que vous avez raison. La requête n'est pas simple. Je soupçonne que SQLite fait quelque chose, mais il n'y a aucun moyen de savoir quoi (sans entrer dans son code qui ne veut pas faire). Puisque les demandes subséquentes sont au plus 20% de ce temps, il s'agit évidemment d'un événement ponctuel. –
ne pouvez-vous pas simplement passer à travers un profileur et voir quelle (s) fonction (s) mange tout ce temps? – jalf