Tengo una base de datos SQLite que es utilizada por dos procesos. Me pregunto, con la versión más reciente de SQLite, mientras un proceso (conexión) inicia una transacción para escribir en la base de datos ¿podrá el otro proceso leer desde la base de datos simultáneamente?¿Puedo leer y escribir simultáneamente en una base de datos SQLite desde múltiples conexiones?
Respuesta
I recopilado información de diversas fuentes, principalmente de sqlite.org, y ponerlos juntos:
En primer lugar, por defecto, varios procesos pueden tener la misma base de datos SQLite abierta, al mismo tiempo, y varios accesos de lectura puede estar satisfecho en paralelo.
En caso de escritura, una sola escritura en la base de datos bloquea la base de datos durante un tiempo corto, nada, ni siquiera la lectura, puede acceder al archivo de la base de datos en absoluto.
A partir de la versión 3.7.0, está disponible una nueva opción “Write Ahead Logging” (WAL), en la que la lectura y la escritura pueden continuar simultáneamente.
De forma predeterminada, WAL no está habilitado. Para activar WAL, consulte la documentación de SQLite.
journal_mode = ¡WAL resuelve mi problema! –
SQLite3 permite explícitamente multiple connections:
(5) ¿Puede múltiples aplicaciones o varias instancias de la misma aplicación el acceso un único archivo de base de datos al mismo tiempo?
Múltiples procesos pueden tener la misma base de datos abierta al mismo tiempo. Múltiples procesos pueden estar haciendo SELECCIONAR al mismo tiempo. Pero solo un proceso puede estar haciendo cambios en la base de datos en cualquier momento en el tiempo , sin embargo.
Para compartir conexiones, utilice SQLite3 shared cache:
partir de la versión 3.3.0, SQLite incluye un modo especial "-caché compartida" (desactivado por defecto)
En la versión 3.5.0, el modo de caché compartida se modificó para que el mismo caché se pueda compartir en un proceso completo en lugar de solo dentro de un solo subproceso .
5.0 Activación Shared-caché Modo
modo de caché compartida está habilitado en función de cada proceso. Mediante la interfaz de C , la siguiente API se puede utilizar para permitir a nivel mundial o desactivar el modo de -cache compartida:
int sqlite3_enable_shared_cache (int);
Cada llamada sqlite3_enable_shared_cache() efectos de bases de datos posterior conexiones creadas usando(), sqlite3_open16 sqlite3_open(), o sqlite3_open_v2(). Las conexiones de bases de datos que ya existen son no afectadas. Cada llamada a sqlite3_enable_shared_cache() anula todas las llamadas anteriores dentro del mismo proceso.
- 1. SQLite: Compartir conexiones entre hilos para leer y escribir
- 2. Socket leer y escribir simultáneamente
- 3. Base de datos y conexiones
- 4. ¿Cómo puedo contar el número de conexiones abiertas en una base de datos sqlite?
- 5. ¿Puedo encriptar la base de datos SQLite?
- 6. H2 Conexiones múltiples a la base de datos
- 7. Múltiples archivos para una sola base de datos SQLite
- 8. ¿Cómo puedo leer mi base de datos desde DDMS
- 9. Conexiones de base de datos y F #
- 10. ¿Cómo puedo crear una base de datos sqlite en memoria?
- 11. SQLite: ¿la forma más rápida de leer datos de la base de datos SQLite?
- 12. ¿Cómo leer y escribir desde una tubería en Perl?
- 13. Codeigniter - conexiones múltiples a la base de datos
- 14. ¿Cómo puedo leer y escribir datos JPEG por píxel?
- 15. ¿Cómo puedo leer y escribir un archivo en Malbolge?
- 16. ¿Cómo puedo emular un puerto COM, escribir datos en él y leer datos de él?
- 17. ¿Cómo podemos descargar la base de datos sqlite desde url y agregarla a nuestra aplicación como base de datos sqlite?
- 18. Android - ¿Existe una base de datos SQLite?
- 19. Android ExpandableListView y base de datos SQLite
- 20. ¿Cómo puedo usar y acceder a una base de datos SQLite usando PHP y Wamp Server?
- 21. Administración de conexiones de SQLite en Android
- 22. Exportación de datos desde SQLite 3
- 23. Creando base de datos Sqlite Embedded desde la aplicación
- 24. Conexiones de base de datos nativas vs ODBC
- 25. conexiones de bases de datos múltiples: schema_migrations se busca en la base de datos incorrecta
- 26. ¿Cómo puedo leer una base de datos/archivo de Python Pickle desde C?
- 27. Cómo almacenar y recuperar una matriz de bytes (datos de imagen) desde y hacia una base de datos SQLite?
- 28. Cómo acceder a MySQL desde múltiples hilos simultáneamente
- 29. Múltiples conexiones concurrentes de bases de datos en drupal 7
- 30. ¿Cómo usar la base de datos SQLite desde MS Access?
pregunta relacionada ver aquí .. http: // stackoverflow.com/questions/12117016/strategies-for-concurrent-read-writing-and-reading-in-sqlite/24038860 # 24038860 – Nepster