鎖定他們在PostgreSQL我有一個像將從1米排表中刪除25萬行下面的查詢:刪除多行不
DELETE FROM table WHERE key = 'needle';
的查詢需要一個多小時才能執行,在這段時間內,受影響的行被鎖定以便寫入。這是不好的,因爲這意味着很多更新查詢必須等待大刪除查詢才能完成(然後它們將失敗,因爲這些行從它們下面消失了,但沒關係)。我需要一種將這個大型查詢分割成多個部分的方法,以便儘可能地減少對更新查詢的干擾。例如,如果刪除查詢可以拆分爲分別具有1000行的塊,則其他更新查詢最多不得不等待涉及1000行的刪除查詢。
DELETE FROM table WHERE key = 'needle' LIMIT 10000;
該查詢將很好地工作,但可惜它不存在於postgres中。
完美! (我不相信我自己沒有想到這個) – 2010-09-14 11:49:44