Java 使用Flyway的惰性数据库迁移

Java 使用Flyway的惰性数据库迁移,java,flyway,Java,Flyway,我们正在使用Flyway迁移我们的数据库,实际上我们有数千个模式(也称为筒仓) 当我们部署一个新的构建时,即使软件构建不需要迁移,DB迁移也可能需要10分钟 我想知道我们是否可以将Flyway配置为执行惰性DB迁移:检查每个schema_version表中的所有架构,如果表中最新的DB版本与当前软件版本相同,则无需执行任何操作;否则,如果SoftwareBuilder中的db版本较新,只需从表中的最新版本开始执行必要的迁移 如果我们能做到以上几点,迁移时间可以从10分钟缩短到几秒钟 有人能解释一

我们正在使用Flyway迁移我们的数据库,实际上我们有数千个模式(也称为筒仓)

当我们部署一个新的构建时,即使软件构建不需要迁移,DB迁移也可能需要10分钟

我想知道我们是否可以将Flyway配置为执行惰性DB迁移:检查每个
schema_version
表中的所有架构,如果表中最新的DB版本与当前软件版本相同,则无需执行任何操作;否则,如果SoftwareBuilder中的db版本较新,只需从表中的最新版本开始执行必要的迁移

如果我们能做到以上几点,迁移时间可以从10分钟缩短到几秒钟


有人能解释一下怎么做吗?谢谢

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

但是,如果您的目标是摆脱这种检查,因为它需要时间,那么您可以切换到基于Java的迁移,而不是基于SQL的迁移,因为与后者不同,Java迁移没有校验和,这可能会减少一些执行时间;但仍需测试

这是关于此事的官方文件:

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


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

我真的不明白这与FlywayDB有什么不同:它会检查当前版本,并且只在需要时更新它。@JBNizet它可以做到这一点,但它也可以为一千个模式中的每一个进行大量的其他操作,即使不需要进行任何迁移工作。我能够窥探我们的web服务器和DB之间的流量,并看到了它。我认为必须有一种方法使db迁移变得懒惰,如果不需要迁移,那么什么也不做!很抱歉反应太晚。当存在SQL迁移脚本列表时,是否可以将flyway配置为跳过验证(包括校验和验证)?