kumu

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为什么会导致数据表挂起,我一直没想明白,希望有知道的人可以帮忙指点迷津。

分类:

技术点:

相关文章:

  • 2022-02-21
  • 2021-07-05
  • 2021-12-02
  • 2021-12-23
  • 2022-01-14
  • 2021-11-16
  • 2021-08-14
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-06-12
  • 2021-11-19
  • 2021-08-05
  • 2021-07-09
  • 2022-12-23
  • 2021-05-09
相关资源
相似解决方案