带有 where 子句 'COLUMN_1 is null' 的 PostgreSQL select 查询挂起
PostgreSQL select query with where clause 'COLUMN_1 is null' hangs
最近我们在没有停止数据库的情况下从创建的备份中恢复了 PostgreSQL 数据库(我知道这是非常错误的,现在我们正在付出代价)。备份是简单的数据库目录备份。
现在我们注意到当我们执行
select *
from table
where COLUMN_1 is null
在我们的一个 table 查询中查询只是挂起(冻结)并且永远不会完成。对相同 table 运行 的其他查询很好,distinct(COLUMN_1)
returns 所有值。在另一列 COLUMN_2 is null
上正确查询 运行s。好像那一栏有问题。
如何修复可能损坏的 table?
使用 pg_dump
转储整个数据库并将其恢复 到新集群 。如果可行,它将消除所有数据损坏。
如果失败,您应该聘请专家。
如果您使用调试器附加到挂起后端,您可以调查它在做什么(如果您熟悉源代码)。
我运行 vacuum full
它解决了我的问题。查询现在在 table.
上使用 is null
子句执行
最近我们在没有停止数据库的情况下从创建的备份中恢复了 PostgreSQL 数据库(我知道这是非常错误的,现在我们正在付出代价)。备份是简单的数据库目录备份。 现在我们注意到当我们执行
select *
from table
where COLUMN_1 is null
在我们的一个 table 查询中查询只是挂起(冻结)并且永远不会完成。对相同 table 运行 的其他查询很好,distinct(COLUMN_1)
returns 所有值。在另一列 COLUMN_2 is null
上正确查询 运行s。好像那一栏有问题。
如何修复可能损坏的 table?
使用 pg_dump
转储整个数据库并将其恢复 到新集群 。如果可行,它将消除所有数据损坏。
如果失败,您应该聘请专家。
如果您使用调试器附加到挂起后端,您可以调查它在做什么(如果您熟悉源代码)。
我运行 vacuum full
它解决了我的问题。查询现在在 table.
is null
子句执行