我有查詢刪除記錄從非常大的表有3千萬records.I刪除記錄在小塊中,就像一個小操作10k記錄。當我運行這個查詢5次它工作正常。來自postgresql中刪除操作的事務塊。日誌?
但之後它不出來。現在甚至無法刪除10條記錄。我懷疑可能是它產生了巨大的事務日誌。如果是這樣,可以請一些機構幫我解決如何清除事務日誌?如果有任何事情,我必須改變我的刪除查詢?任何查詢,找出日誌文件的大小?我現在用的Postgres 9.1
WITH ids_to_delete as(
SELECT rh.dp_value_id
FROM raw_dp_links rh LEFT OUTER JOIN dp_values dp
ON rh.dp_value_id=dp.dp_value_id
where dp.dp_value_id is null
limit 10000
)
delete from raw_dp_links where dp_value_id in (select dp_value_id from ids_to_delete)
很可能您的查詢正在等待鎖定。看到這裏:https://wiki.postgresql.org/wiki/Lock_Monitoring如果WAL段的大小(在Postgres中沒有「事務日誌」這樣的東西)太大了,你會得到一個錯誤信息 –
是的你是正確的,因爲當我重新啓動我的數據庫它工作得很好。但爲什麼鎖獲得簡單的刪除操作? – SUDARSHAN
您的刪除語句不會自行鎖定。您可能有其他事務修改這些行。或者修改引用表的某些外鍵。請閱讀維基頁面並運行這些語句來調查造成這些鎖定的原因。沒有更多信息是不可能的。 –