dpr*_*dpr 5 java postgresql asynchronous liquibase
我们使用 liquibase 来管理应用程序底层关系数据库结构的变化。我们使用 PostgreSQL 作为数据库后端。
现在有包含数百万条目的表,我们需要为其中一些大型表添加索引。由于表的大小,索引创建需要相当长的时间。这会阻止应用程序启动,因为 liquibase 变更集是在应用程序的启动阶段执行的,以确保在应用程序实际运行之前有适当的持久性后端可用。
虽然由于显而易见的原因需要在应用程序启动之前进行结构更改,但可以在应用程序已经运行时添加索引。因此我的问题是:
有没有办法与 liquibase 异步执行索引创建?
我们已经尝试使用CONCURRENTPostgreSQL 提供的选项。这有助于在应用程序运行时创建索引,因为索引创建不会锁定相应的表。但相应的 liquibase 变更集仍将等待索引创建完成,然后才能执行下一个变更集。
小智 -1
这不可能直接实现,但您可以解决该问题:
在运行 liquibase之前,您需要手动运行索引创建。(这将允许您使用“同时”选项)。
为了保留更改记录,您可以将索引创建脚本(不带“并发”选项)添加到 liquibase,前提条件是 onFail="MARK_RAN "。
当 liquibase 下次运行时,它会将变更集标记为已运行。
| 归档时间: |
|
| 查看次数: |
2801 次 |
| 最近记录: |