私はAndroidアプリ用のフライウェイを実装しています。それは比較的スムーズに進みましたが、私はアプリの起動時間が大幅に増加していることに気付きました。私はわずかな増加が予想されましたが、500ms - 1sではありませんでした。Android用フライウェイはマイグレーションを全く行わないのに〜500msかかる
私はここで、不審なフライウェイ4.0.3
何を使用していますか?
SQLiteDatabase db = context.openOrCreateDatabase(DatabaseManager.DATABASE_NAME, 0, null);
ContextHolder.setContext(context);
flyway.setDataSource("jdbc:sqlite:" + db.getPath(), "", "");
flyway.setBaselineOnMigrate(true);
flyway.setCallbacks(new MigrationFlywayCallback());
try {
flyway.migrate();
} catch (Exception e) {
sendMigrationFailedEvent(e);
}
相対的なログ出力:
https://gist.github.com/jonschmidt/1fc61b45b1c0bf95baaa5d44f3c204c0
EDIT
問題はフライウェイは、それが移行するかどうかを確認するためにチェックする方法であると思われます。これは、メタデータテーブルは内部
version_rank列を持っているかどうかをチェックし、これは、ここにcolumnNamePatternはへ
を列名を渡すことによって、列の存在を確認するためにSQLDroidを使用していますこれは決してその関数で使用されないので、常にtrueを返します。FlyWayは、アプリケーションを起動するたびにマイグレーションが必要と思って操作に数百msを追加します。
私はそれを見ました。これは毎回成功したとしても、私がアプリケーションを起動するたびにこれを行うようです。バグか、設定に何か問題があると思われますか? –
申し訳ありませんが、永続的ですが、私はあなたが中心的な貢献者であり、これについてより多くの洞察力を持っていると思います。この移行が毎回実行されると考えることができる理由はありますか?もし私がこれを解決できないのであれば、私たちはかなり恥ずかしがるかもしれないので、私は図書館の使用を止めなければなりません。 –
"私はこの問題を解決できない場合、私たちのライブラリの使い方を落とす必要があります" - またはデバッガを開いて何が起きているかを調べることができます;-) –