簡體   English   中英

異步執行長時間運行的liquibase數據庫更新

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM