En el SQLite documentation en la función de escritura anticipada de registro presentada en la versión 3.7, hay algunos comentarios que me confundieron un poco.¿Qué tan seguro es SQLite WAL en fallas de energía?
La página enlazada dice que "no es necesario sincronizar el contenido con el disco, siempre que la aplicación esté dispuesta a sacrificar la durabilidad después de una pérdida de potencia". Luego, un par de párrafos abajo, dice "Checkpointing requiere operaciones de sincronización para evitar la posibilidad de corrupción de la base de datos después de una pérdida de energía o un reinicio" ".
Mi base de datos está en mayor riesgo de corrupción en la pérdida de potencia si uso WAL?
Sé que esta respuesta es antigua, pero tiene un error bastante importante. No perderá transacciones desde el último punto de control, perderá transacciones que aún no se han escrito completamente en el WAL. Si synchronous = NORMAL, no espera un fsync() cuando escribe la transacción en el WAL, por lo que puede perder esa transacción si pierde potencia antes de que esté completamente escrita. Una vez que esté en el WAL, no se perderá, independientemente del punto de control. –
Hasta 2016-02-17 https://www.sqlite.org/docsrc/info/3540d671bcc4835c la documentación SQLite decía que synchronous = NORMAL por defecto en modo WAL ... ahora dice synchronous = FULL - mucho más safe default. Por lo tanto, perderá transacciones antes del punto de control solo si establece el modo sincrónico = NORMAL –