[英]Execute long running liquibase database updates asynchronously
我們正在使用liquibase來管理應用程序基礎關系數據庫的結構更改。 作為數據庫后端,我們使用PostgreSQL。
現在有具有數百萬個條目的表,我們需要向其中一些大表添加索引。 由於表的大小,索引創建需要相當長的時間。 這會阻止應用程序啟動,因為liquibase變更集是在應用程序的啟動階段執行的,以確保在應用程序實際運行之前有適當的持久性后端可用。
雖然出於明顯的原因需要在啟動應用程序之前進行結構更改,但是可以在應用程序已經運行時添加索引。 因此,我的問題是:
有沒有一種方法可以與liquibase異步執行索引創建?
我們已經嘗試使用PostgreSQL提供的CONCURRENT
選項 。 這有助於在應用程序運行時創建索引,因為相應的表不會被索引創建鎖定。 但是各個liquibase變更集仍將等待索引創建完成,然后再執行下一個變更集。
這不是直接可能的,但是您可以解決該問題:
在運行liquibase 之前,您將需要手動運行索引創建。 (這將允許您使用“同時”選項)。
為了保留更改的記錄,您可以將索引創建腳本(不帶“ concurrently”選項)添加到liquibase中,前提是帶有onFail =“ MARK_RAN”的前提。
下次運行liquibase時,它將更改集標記為運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.