2017-02-01 172 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状态行,那么你真的需要启用自动提交您的客户端程序。其实你需要这样做,即使你不...