创建表永无止境

时间:2017-02-01 07:31:52

标签: postgresql pgadmin

我尝试在Postgres数据库中创建表。我在版本1.18.1中使用pgadmin。服务器上的Postgres版本是8.3.12。

当我执行create table语句时,通常它会在几毫秒内完成,但有时它会持续几分钟而我会停止它。然后我必须重新启动Postgres服务器,这是不受欢迎的。我尝试在人们上班之前创建表格,但这也不起作用。

有人有类似的问题吗?我该如何解决这个问题? 重启服务器有时候确实存在问题。

1 个答案:

答案 0 :(得分:1)

默认情况下,某些具有Postgres支持的GUI数据库管理程序以noautocommit模式启动。这意味着如果你不隐式提交你的语句,这个程序将长时间保持空闲的未提交会话,锁定资源 - 特别是当你执行create table等DDL语句时。

检查:

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

如果您在query_age列和idle in transaction状态中看到长时间行,那么您确实需要在客户端程序中启用自动提交。实际上,即使你不这样做,你也需要这样做......