Se è possibile, come?può sqlite caricare 10M di dati nella memoria
Voglio accelerare le letture (non scritte) in SQLite
Grazie
Se è possibile, come?può sqlite caricare 10M di dati nella memoria
Voglio accelerare le letture (non scritte) in SQLite
Grazie
Sì.
SQLite carica i dati in memoria nelle pagine. La dimensione della pagina predefinita è 1024 byte. È possibile modificare le dimensioni della pagina utilizzando questo comando.
PRAGMA page_size = bytes;
ma si deve fare questo prima di creare il database (o in 3.5.8, è possibile modificarlo eseguendo un vuoto dopo l'emissione della nuova dimensione del pragma pagina).
La cache è basata sul numero di pagine. La dimensione predefinita della cache è di 2000 pagine. Puoi cambiarlo usando questo comando.
PRAGMA cache_size = Number-of-pages;
Quindi, per memorizzare 10 MB di dati in memoria, aumentare le dimensioni della pagina a 5120 o aumentare la dimensione della cache a 10000.
Maggiori informazioni pragma è qui.
Dovresti * non * cambiare le dimensioni della pagina a meno che tu non sappia cosa stai facendo; è la cosa sbagliata con cui si gioca se si sta tentando di influenzare il caching e impostarlo su 5120 avrà probabilmente conseguenze negative sulle prestazioni. Inoltre, per molti scenari, si desidera eseguire il pre-cache di tutto, dal momento che occupare pigramente la cache leggendo il file fuori ordine tramite l'accesso normale può essere molto lento. –
@Glenn Maynard, in genere la prima cosa che viene raccomandata quando si parla delle prestazioni in SQLite è quella di regolare le dimensioni della pagina. Il valore predefinito di 1024 viene utilizzato per la compatibilità con le versioni precedenti ed è un compromesso tra le numerose piattaforme in cui viene utilizzato SQLite. Sicuramente su un sistema operativo embedded con memoria molto limitata si desidera una dimensione di pagina inferiore rispetto a un sistema operativo server che è in gran parte dedicato a un'applicazione basata su database. I nostri test con la nostra applicazione su Windows hanno dimostrato che la dimensione della pagina migliore per noi è 4096 byte. –
Questo vale per le prestazioni I/O, non "come aumentare la dimensione della cache". Impostarlo su un non-potere-di-due come il 5120 è quasi certamente una pessima idea. –
nota, che le dimensioni della pagina era stato aumentato a 4096 byte a partire dalla SQLite versione 3.12.0
non sono sicuro di capire il problema. Vuoi avere un DB sqlite in memoria o vuoi leggere fino a 10 MB di informazioni in memoria? Quale associazione linguistica stai usando? –
Ho dati 10M in pysqlite, voglio caricarlo nella memoria – zjm1126