0
我有一個非常長的運行功能,這是一個導入過程,它目前正在運行。它已經運行了10個小時,根據我的計算 - 大約需要16-24小時才能完成。Force Postgres索引創建
但是,它花費這麼長時間的原因之一是因爲它用於查找(以及寫入)的表格之一未正確索引。
我不能中斷函數,因爲這會導致它回滾事務並撤銷其最近10個小時的工作。但是,我不能在中間操作時創建索引,因爲它保留了表上的鎖定。
有什麼辦法可以強制Postgres獲得對錶的明確鎖定並創建索引(在創建它時暫停函數執行)?
如果沒有,是否有反正我可以中斷功能沒有讓它回滾到目前爲止的工作?
非常感謝。第二種說法是我不太確定的;從技術上講,它是一個聲明,因爲它運行了一個'select func()',但是'func()'像存儲過程一樣構造並且在循環中運行一系列查詢。所以,它可能決定在循環迭代中使用新的索引。我會試試看!謝謝! – Ruslan
此外,該函數正在爲其循環使用臨時表(CREATE LOCAL TEMP TABLE ... ON COMMIT DROP)。是否有一些hacky的方式,我可以截斷表中的其餘行? – Ruslan