2010-02-02 10 views
15

Si es posible, ¿cómo?puede sqlite cargar datos de 10M en la memoria

que desea acelerar las lecturas (no escritos) en sqlite

Gracias

+0

no estoy seguro de entender el problema. ¿Desea tener una base de datos sqlite en la memoria o desea leer hasta 10 MB de información en la memoria? ¿Qué enlace de idioma estás usando? –

+0

tengo 10M de datos en pysqlite, quiero cargarlos en la memoria – zjm1126

Respuesta

18

Sí.

SQLite carga datos en la memoria en las páginas. El tamaño de página predeterminado es 1024 bytes. Puede cambiar el tamaño de página usando este comando.

PRAGMA page_size = bytes; 

pero hay que hacerlo antes de crear la base de datos (o en 3.5.8, se puede cambiar mediante la ejecución de un vacío después de la emisión de la nueva página pragma tamaño).

La memoria caché se basa en el número de páginas. El tamaño de caché predeterminado es de 2000 páginas. Puedes cambiarlo usando este comando.

PRAGMA cache_size = Number-of-pages; 

Así que para almacenar 10 MB de datos en la memoria, o bien aumentar el tamaño de página de 5120 o aumentar el tamaño de caché a 10000.

Más información sobre pragmas está aquí.

http://sqlite.org/pragma.html

+6

No debe * cambiar * el tamaño de página a menos que sepa lo que está haciendo; es lo incorrecto para jugar si estás tratando de influir en el almacenamiento en caché, y establecerlo en 5120 probablemente tenga consecuencias nefastas para el rendimiento. Además, para muchos escenarios, debe precachear todo, ya que la acumulación lenta de caché al leer el archivo fuera de servicio a través del acceso normal puede ser muy lento. –

+5

@Glenn Maynard, normalmente lo primero que se recomienda cuando se habla sobre el rendimiento en SQLite es ajustar el tamaño de la página. El valor predeterminado de 1024 se usa para compatibilidad con versiones anteriores y es un compromiso entre las muchas plataformas donde se usa SQLite. Ciertamente, en un sistema operativo integrado con memoria muy limitada, desea un tamaño de página inferior que en un sistema operativo de servidor que está dedicado principalmente a una aplicación basada en una base de datos. Nuestras propias pruebas con nuestra aplicación en Windows mostraron que el mejor tamaño de página para nosotros es 4096 bytes. –

+4

Eso es para el rendimiento de E/S, no "cómo hacer que el tamaño de la caché sea más grande". Establecerlo en un power-of-two como 5120 es casi seguro que es una muy mala idea. –

Cuestiones relacionadas