2017-02-01 136 views
0

我嘗試在我的Postgres數據庫中創建表。我在版本1.18.1中使用pgadmin。服務器上的Postgres版本是8.3.12。創建表永不結束

當我執行創建表語句時,通常它在幾毫秒內完成,但有時它會持續幾分鐘,我停止它。然後我必須重新啓動Postgres服務器,這是不可取的。我在人們上班之前嘗試過創建表格,但那不起作用。

有類似的問題嗎?我該如何解決這個問題? 重啓服務器有時真的有問題。

+2

它可能正在等待一個鎖:https://wiki.postgresql.org/wiki/Lock_Monitoring但是,爲什麼你使用古老的和不受支持的Postgres版本? –

+0

它不取決於我...我們的管理不允許更新。當我們想要將Java從版本6更新到8時,我們幾乎沒有戰爭... – mdolata

+0

您是否有autovacuum運行? (真空在pg-8.4,IIRC之前沒有自動運行) – wildplasser

回答

0

默認情況下,一些具有Postgres支持的GUI數據庫管理程序以noautocommit模式啓動。這意味着如果你沒有隱式地提交你的語句,這個程序會長時間保持閒置的未提交的會話,鎖定資源 - 特別是當你執行DDL語句如create table時。

檢查:

select now()-query_start as query_age, * 
from pg_stat_activity 
where state<>'idle' 
order by 1 desc; 

,如果你看到長的時間在query_age列和idle in transaction狀態行,那麼你真的需要啓用自動提交您的客戶端程序。其實你需要這樣做,即使你不...