![](/img/trans.png)
[英]nginx, Unicorn, Rails, Postgres and database parallelism when requests take a long time to finish?
[英]bulk/multiple queries that take a long time never finish in Postgres
我在 postgres 中創建了一個 function ,將數據插入到表中。 function 接收一個字符串,並在處理后將值輸入到表中。 我想要的是能夠在 pgAdmin 中多次調用 function 而不是批量運行它們。
示例:在 pgAdmin 我打開我的 sql 查詢 window 並輸入
select customfunction('string1');
select customfunction('string2');
^
.
.
.
.
v
select customfunction('string100000000');
當我嘗試運行它時,它僅在我運行大約 6000 行(6000 個函數)時才有效。 如果我在它運行時取消它,它不會提交任何東西(甚至不是第一行)。 我必須繼續將它們分成批次來完成整個查詢。 如果不分批運行它們,我怎樣才能實現這一點。
我想復制並粘貼整個查詢並等待一切完成。 現在,如果我批量運行超過 10000 行,查詢將無限期地運行而沒有響應。 有沒有辦法 postgres 可以在運行該行后提交每一行?
我還想知道是否有人可以在查詢運行時准確確定正在處理的行。
有沒有辦法 postgres 可以在運行該行后提交每一行?
如果啟用了自動提交,它就不會這樣做 - 這也是默認設置,所以......您是否在調用之前使用 begin 語句? 如果是這樣,請在撥打電話之前提交...
另外,考慮准備聲明或按照傑克的建議去做。
您是否嘗試過將字符串批處理到文件中,將文件導入到表中(我將使用名為 string 的單個列調用 string_table),然后嘗試:
select customfunction(string)
from string_table;
ETA:如果您想要某種進度指示器並且需要一次運行一個 select,您可以使用腳本語言中的 DBI 從文件或表中讀取字符串,循環遍歷 function 調用,然后在每次迭代時做一個簡單的控制台打印輸出。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.