我为我的Android应用实施了Flyway。它相对顺利,但我注意到应用启动时间大幅增加。我预计小幅增加,但不是500毫秒 - 1秒。
我使用的是flyway 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
修改
问题似乎是FlyWay检查是否应该迁移的方式。它检查元数据表是否具有列version_rank
在内部,这使用SQLDroid来检查列的存在,方法是将列名称传递给columnNamePattern
在该函数中从未使用过,因此它将始终返回true,FlyWay会认为每次启动应用程序时都需要迁移,为操作添加几百毫秒。
答案 0 :(得分:0)
正如日志所说
升级元数据表" main"。" schema_version"到Flyway 4.0格式......
Flyway执行了从Flyway 3.x到Flyway 4.x元数据表格式的一次性迁移。