pg数据库数据表异常挂起

Posted 枯木fc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pg数据库数据表异常挂起相关的知识,希望对你有一定的参考价值。

pg数据库即是PostgreSQL数据库。

前几天在一个Java项目中,出现运行Java程序后,pg数据库的数据表异常挂起。而且是在某台电脑上出现的,重装数据库也没用,其它电脑未能复现,是个很奇怪的现象。

异常挂起的主要表现是:

1、使用pgAdmin选中相应的表,会导致pgAdmin未响应,并且很长时间都无法恢复。

2、使用pgAdmin直接sql命令增删查改都无法执行,执行所花时间从几十毫秒一直增长到几分钟,预计会一直增长下去。

3、只有重启PostgreSQL服务才能让出现异常的数据表恢复正常,恢复到既能选中,又能通过sql语句增删改查。

最终经过排查,确定出是因为Java中使用truncate命令对数据表进行清表操作导致了数据表异常挂起,之后把truncate命令换成了delete命令则一切正常。

在排查过程中,在pgAdmin中使用truncate命令直接清理会出现异常的表,也能复现前面的问题,而delete正常使用。

 

下面附上truncate、delete以及drop的区别:drop、truncate和delete的区别

 

至于这个特例情况下,truncate为什么会导致数据表挂起,我一直没想明白,希望有知道的人可以帮忙指点迷津。

以上是关于pg数据库数据表异常挂起的主要内容,如果未能解决你的问题,请参考以下文章

休眠约束违反异常挂起sql server

pg数据库杀掉连接

Ceph源码解析:PG peering

当其中一个线程(chrome)异常时,Uwsgi挂起(10-60秒)

请教oracle连接PG数据库的问题

ceph pg分配状态#yyds干货盘点#