Si c'est possible, comment?peut sqlite charger des données 10M dans la mémoire
Je veux accélérer les lectures (non écrits) dans SQLite
Merci
Si c'est possible, comment?peut sqlite charger des données 10M dans la mémoire
Je veux accélérer les lectures (non écrits) dans SQLite
Merci
Oui. SQLite charge les données en mémoire dans les pages. La taille de page par défaut est 1024 octets. Vous pouvez changer la taille de la page en utilisant cette commande.
PRAGMA page_size = bytes;
Mais vous devez le faire avant de créer la base de données (ou 3.5.8, vous pouvez le changer en exécutant un vide après l'émission de la nouvelle taille de la page pragma).
Le cache est basé sur le nombre de pages. La taille du cache par défaut est de 2000 pages. Vous pouvez le changer en utilisant cette commande.
PRAGMA cache_size = Number-of-pages;
Donc, pour stocker 10 Mo de données en mémoire, soit augmenter la taille de la page 5120 ou d'augmenter la taille du cache à 10000.
Plus d'info sur pragma est ici.
Vous ne devriez * pas * changer la taille de la page à moins de savoir ce que vous faites; c'est une mauvaise chose de jouer avec si vous essayez d'influencer la mise en cache, et le réglage sur 5120 aura probablement des conséquences sur les performances. En outre, pour de nombreux scénarios, vous souhaitez tout pré-mettre en cache, car le remplissage paresseux du cache en lisant le fichier dans le désordre par un accès normal peut être très lent. –
@Genn Maynard, généralement la première chose qui est recommandée lors de la discussion des performances dans SQLite est d'ajuster la taille de la page. La valeur par défaut de 1024 est utilisée pour la rétrocompatibilité et constitue un compromis entre les nombreuses plates-formes où SQLite est utilisé. Il est certain que sur un système d'exploitation embarqué avec une mémoire très limitée, vous voulez une taille de page inférieure à celle d'un système d'exploitation serveur largement dédié à une application pilotée par base de données. Nos propres tests avec notre application sur Windows ont montré que la meilleure taille de page pour nous est de 4096 octets. –
C'est pour les performances d'E/S, pas pour "comment agrandir la taille du cache". Le définir à un non-puissance de deux comme 5120 est presque certainement une très mauvaise idée. –
Notez que la taille de la page a été augmentée à 4096 octets à partir de la version sqlite 3.12.0
Je ne suis pas sûr de comprendre le problème. Voulez-vous avoir une base de données sqlite en mémoire ou voulez-vous lire jusqu'à 10 Mo d'informations en mémoire? Quelle langue utilisez-vous? –
J'ai des données 10M dans pysqlite, je veux le charger dans la mémoire – zjm1126