2010-12-13 17 views
5

L'esecuzione di più istruzioni SQL senza inserirle in un'unica transazione è un grave collo di bottiglia (vedere ad esempio http://www.sqlite.org/faq.html#q19). Non ho ancora controllato in dettaglio come SQLite sia configurato su Android, ma ho percepito in modo aneddotico un aumento drammatico delle prestazioni all'interno della mia app quando utilizzo le transazioni in più punti.Rilevare transazioni SQLite dimenticate su Android utilizzando StrictMode?

È possibile rilevare le istanze in cui si dimentica di utilizzare le transazioni utilizzando StrictMode? In caso contrario, potrebbe essere considerato per una versione futura di StrictMode? Potrebbe essere alquanto complicato da rilevare, ma due strategie diverse potrebbero essere: 1) dichiarazioni non selezionate al di fuori della transazione, oppure 2) più istruzioni non selezionate al di fuori della transazione eseguite entro un breve periodo di tempo.

risposta

3

Sì, sembra una buona cosa da prendere. Ho potuto immaginare un'API come:

StrictMode.catchWritesOutsideTransactionsOn(SQLiteDatabase db);

Abbiamo preso in considerazione altri ganci SQLite in StrictMode (per lo più intorno seleziona indici mancanti e simili), ma questa è una buona idea troppo!

+1

Cheers! Anche gli indici mancanti sarebbero fantastici! – jonasb

+0

Aspettando che il pan di zenzero colpisca il mio Nexus ... pollici tweet :) – hunterp

+0

Ehi, la fonte Gingerbread è ora disponibile! Un passo alla volta. :) –