使用Flyway进行懒惰数据库迁移

时间:2018-06-17 14:22:36

标签: java flyway

我们正在使用Flyway迁移我们的数据库,我们确实拥有数千种模式(a.k.a Silos)。

当我们部署新版本时,即使软件构建不需要迁移,数据库迁移也可能需要10分钟。

我想知道我们是否可以将Flyway配置为执行延迟数据库迁移:如果表中的最新数据库版本等于当前软件构建的版本,则检查每个schema_version表的所有模式,然后没有必要做任何事情;否则,如果软件构建器中的db版本较新,则只需从表中的最新版本开始执行必要的迁移。

如果我们可以执行上述操作,迁移时间可能会从10分钟缩短到几秒钟。

有人能说清楚如何做到这一点吗?谢谢!

1 个答案:

答案 0 :(得分:0)

如JB Nizet所述,Flyway会检查当前版本,除非需要,否则不会执行任何更新。

但是,如果您的目标是由于需要时间而取消此检查,您可以切换到基于Java的迁移而不是基于SQL的迁移,因为与后者不同,Java迁移没有校验和,而这是你可以减少一些执行时间;仍然需要进行测试。

这是来自此事的官方文件:

  

与SQL迁移不同,默认情况下Java迁移没有   校验和,因此不参与变更检测   Flyway的验证。这可以通过实施来弥补   MigrationChecksumProvider接口。

我不知道这是否会缩短执行时间,但至少可能值得测试。