sql >> Base de Datos >  >> RDS >> SQLite

¿Ha cambiado el comportamiento de Android SQLite Journal?

@CL tiene razón, el modo de diario parece cambiar según el nivel de API (¿quizás también cambia según el fabricante?).

Sin embargo, para referencia futura, consulté la base de datos para journal_mode en varios niveles de API y los resultados son:

  • Android 2.3.7 (API 10) =eliminar
  • Android 4.0.4 (API 15) =truncado
  • Android 4.1.1 (API 16) =persistir
  • Android 4.3.0 (API 18) =persistir
  • Android 4.4.4 (API 19) =persistir
  • Android 5.0.0 (API 21) =persistir
  • Android 5.1.0 (API 22) =persistir

Código para obtener el modo diario:

Cursor c = db.rawQuery("PRAGMA journal_mode;", null);
c.moveToFirst();
String journalMode = c.getString(c.getColumnIndex("journal_mode"));

Acerca de los modos de diario:

El modo de registro en diario DELETE es el comportamiento normal. En el modo DELETE, el diario de reversión se elimina al final de cada transacción. De hecho, la operación de eliminación es la acción que hace que se confirme la transacción.

El modo de registro en diario TRUNCATE confirma transacciones truncando el diario de reversión a cero en lugar de eliminarlo. En muchos sistemas, truncar un archivo es mucho más rápido que eliminarlo, ya que no es necesario cambiar el directorio que lo contiene.

El modo de diario PERSIST evita que el diario de reversión se elimine al final de cada transacción. En su lugar, el encabezado del diario se sobrescribe con ceros. Esto evitará que otras conexiones de base de datos reviertan el diario. El modo de diario PERSIST es útil como optimización en plataformas donde eliminar o truncar un archivo es mucho más costoso que sobrescribir el primer bloque de un archivo con ceros.

Más información