[英]Idle in transaction and lock with PostgreSQL
我有一個被鎖定的查詢。 因此我的網絡應用程序被鎖定,我真的不明白為什么。
看着 PgAdmin 我有這個:
如果我理解正確,橙色查詢已被上面的查詢阻止(處於“事務空閑”狀態)。
這是否意味着未提交“事務空閑”事務? 是不是因為沒有提交另一個事務被鎖定?
如果我提交“交易空閑”交易,它會解鎖鎖定的交易嗎?
說實話,我真的不明白我應該如何解釋這一點。 你能幫助我嗎 ?
您的假設是正確的。 “交易中的閑置”是指會話(在本例中為PID = 16686)開始了交易,並在商品goodscontract
表上保留了一些鎖。
請注意,您看到的PID = 16686的選擇很可能不是阻止更新的語句(Postgres中的讀取器未阻止寫入器)。 PID = 16686很可能以前運行了獲取鎖的其他語句(或者select包含for update
子句-因為您的屏幕快照未顯示完整的語句,這是無法告訴的)。
通常,強烈建議盡快結束事務(使用commit
或rollback
)-包括僅select
s的只讀事務。
postgresql.conf 上需要更新兩件事
idle_transaction_timeout
共享內存
將解決問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.