2009-07-20 72 views
3

我的應用程序測試在數據庫上相當困難。他們運行create,drop和alter table語句。但是,即使在死鎖的情況下(即檢測鎖定並刪除一個線程),我仍然希望postresql能夠處理這些問題。我也沒有同時運行請求。PostgreSQL獨佔鎖定應用程序

但是,在我的情況下,它只是凍結,我不得​​不手動殺死他們關閉手動(它的工作原理,如果我改變稍微運行的順序,但這並不能給我信心)。這些鎖顯示create table語句具有排他鎖,並且事務也具有一個鎖。

有沒有人遇到類似的東西?有任何服務器設置可以幫助嗎?或者只是任何建議?

回答

7

PostgreSQL自動檢測到死鎖。最有可能的是,你只是在一些沒有完成的聲明上阻止。只有兩個語句彼此等待時纔會發生死鎖。

如果你檢查你的「鎖定樹」到根目錄(阻止在b上阻塞一個根目錄),你很可能會發現一個事務需要很長時間才能運行,或者沒有正確承諾,但只是坐在「閒置交易」模式。

既然你提到了線程雖然 - 請注意,客戶端的所有客戶端庫不一定是線程安全的。

+1

謝謝。這是一個閒置的交易,http://wiki.dspace.org/index.php/Idle_In_Transaction_Problem,幫助我調試什麼導致了交易,儘管我仍然沒有確定它不會發生。 – 2009-07-20 22:04:12