2010-02-02 10 views
15

Se è possibile, come?può sqlite caricare 10M di dati nella memoria

Voglio accelerare le letture (non scritte) in SQLite

Grazie

+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? –

+0

Ho dati 10M in pysqlite, voglio caricarlo nella memoria – zjm1126

risposta

18

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.

http://sqlite.org/pragma.html

+6

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. –

+5

@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. –

+4

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. –

Problemi correlati