11 puntos por GN⁺ 2024-11-14 | 1 comentarios | Compartir por WhatsApp
  • Uno de los malentendidos más comunes sobre SQLite es que la gente deja de usarlo porque piensa que "SQLite es una base de datos que solo permite una única conexión"
  • Esto resulta confuso (¿qué significa exactamente "conexión" aquí?) y además es una afirmación incorrecta en varios sentidos
  • Operaciones de lectura (Read Operations)
    • SQLite admite perfectamente múltiples operaciones de lectura simultáneas
    • Es posible leer datos al mismo tiempo desde varias “conexiones”, y en este proceso no se producen conflictos ni problemas
  • Operaciones de escritura (Write Operations)
    • SQLite usa un bloqueo de escritura a nivel de la base de datos (Write Lock) durante las operaciones de escritura
    • No permite varias operaciones de escritura al mismo tiempo, por lo que solo una “conexión” puede realizar una operación de escritura a la vez
    • Por lo general esto no representa un problema porque se puede iniciar una IMMEDIATE TRANSACTION
    • En ese caso, SQLite puede reintentar en la cola para adquirir el bloqueo de escritura
      • (Esto permite que la operación de escritura se ejecute automáticamente cuando se libere el bloqueo de escritura)

1 comentarios

 
savvykang 2024-11-15

https://www.sqlite.org/lockingv3.html

5.0 Escritura en un archivo de base de datos
Para escribir en la base de datos, un proceso primero debe adquirir un bloqueo SHARED, como se describió anteriormente. Después de adquirir el bloqueo SHARED, debe adquirir un bloqueo RESERVED. Un bloqueo RESERVED indica que el proceso escribirá en la base de datos en algún momento en el futuro. Solo un proceso puede mantener un bloqueo RESERVED a la vez. Sin embargo, otros procesos pueden seguir leyendo la base de datos mientras se mantiene el bloqueo RESERVED.