SQLite
 sql >> Base de Dados >  >> RDS >> SQLite

O comportamento do Android SQLite Journal mudou?


@CL está certo, o modo de diário parece mudar dependendo do nível da API (talvez mude também pelo fabricante?).

No entanto, para referência futura, consultei o banco de dados para o journal_mode em vários níveis de API e os resultados são:
  • Android 2.3.7 (API 10) =excluir
  • Android 4.0.4 (API 15) =truncar
  • 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 obter o modo diário:
Cursor c = db.rawQuery("PRAGMA journal_mode;", null);
c.moveToFirst();
String journalMode = c.getString(c.getColumnIndex("journal_mode"));

Sobre os modos de diário:

O modo de registro no diário DELETE é o comportamento normal. No modo DELETE, o diário de rollback é excluído na conclusão de cada transação. De fato, a operação de exclusão é a ação que faz com que a transação seja confirmada.

O modo de registro no diário TRUNCATE confirma transações truncando o diário de reversão para comprimento zero em vez de excluí-lo. Em muitos sistemas, truncar um arquivo é muito mais rápido do que excluí-lo, pois o diretório que o contém não precisa ser alterado.

O modo de registro no diário PERSIST impede que o diário de reversão seja excluído ao final de cada transação. Em vez disso, o cabeçalho do diário é substituído por zeros. Isso impedirá que outras conexões de banco de dados revertam o diário. O modo de diário PERSIST é útil como uma otimização em plataformas em que excluir ou truncar um arquivo é muito mais caro do que substituir o primeiro bloco de um arquivo com zeros.

Mais informações