我们正在使用Flyway迁移我们的数据库,我们确实拥有数千种模式(a.k.a Silos)。
当我们部署新版本时,即使软件构建不需要迁移,数据库迁移也可能需要10分钟。
我想知道我们是否可以将Flyway配置为执行延迟数据库迁移:如果表中的最新数据库版本等于当前软件构建的版本,则检查每个schema_version
表的所有模式,然后没有必要做任何事情;否则,如果软件构建器中的db版本较新,则只需从表中的最新版本开始执行必要的迁移。
如果我们可以执行上述操作,迁移时间可能会从10分钟缩短到几秒钟。
有人能说清楚如何做到这一点吗?谢谢!
答案 0 :(得分:0)
如JB Nizet所述,Flyway会检查当前版本,除非需要,否则不会执行任何更新。
但是,如果您的目标是由于需要时间而取消此检查,您可以切换到基于Java的迁移而不是基于SQL的迁移,因为与后者不同,Java迁移没有校验和,而这是你可以减少一些执行时间;仍然需要进行测试。
这是来自此事的官方文件:
与SQL迁移不同,默认情况下Java迁移没有 校验和,因此不参与变更检测 Flyway的验证。这可以通过实施来弥补 MigrationChecksumProvider接口。
我不知道这是否会缩短执行时间,但至少可能值得测试。