5

1 つのトランザクションにまとめずに複数の SQL ステートメントを実行すると、重大なボトルネックになります (例: http://www.sqlite.org/faq.html#q19を参照)。Android で SQLite がどのように構成されているかを十分に確認したことはありませんが、より多くの場所でトランザクションを使用すると、アプリ内でパフォーマンスが劇的に向上することに気付いたという逸話があります。

StrictMode を使用してトランザクションを使用するのを忘れたインスタンスを検出することは可能ですか? そうでない場合、StrictMode の将来のリリースでそれを検討できますか? 検出するのはやや難しいかもしれませんが、1) トランザクション外の非選択ステートメント、または 2) 短期間に実行されたトランザクション外の複数の非選択ステートメントの 2 つの異なる戦略が考えられます。

4

1 に答える 1

3

ええ、それはキャッチするのに良いことのように聞こえます。次のような API を想像できます。

StrictMode.catchWritesOutsideTransactionsOn(SQLiteDatabase db);

StrictMode への他の SQLite フックを検討してきましたが (ほとんどの場合、不足しているインデックスの選択など)、これも良いアイデアです。

于 2010-12-14T22:56:01.250 に答える