我有查询删除记录从非常大的表有3千万records.I删除记录在小块中,就像一个小操作10k记录。当我运行这个查询5次它工作正常。来自postgresql中删除操作的事务块。日志?
但之后它不出来。现在甚至无法删除10条记录。我怀疑可能是它产生了巨大的事务日志。如果是这样,可以请一些机构帮我解决如何清除事务日志?如果有任何事情,我必须改变我的删除查询?任何查询,找出日志文件的大小?我现在用的Postgres 9.1
WITH ids_to_delete as(
SELECT rh.dp_value_id
FROM raw_dp_links rh LEFT OUTER JOIN dp_values dp
ON rh.dp_value_id=dp.dp_value_id
where dp.dp_value_id is null
limit 10000
)
delete from raw_dp_links where dp_value_id in (select dp_value_id from ids_to_delete)
很可能您的查询正在等待锁定。看到这里:https://wiki.postgresql.org/wiki/Lock_Monitoring如果WAL段的大小(在Postgres中没有“事务日志”这样的东西)太大了,你会得到一个错误信息 –
是的你是正确的,因为当我重新启动我的数据库它工作得很好。但为什么锁获得简单的删除操作? – SUDARSHAN
您的删除语句不会自行锁定。您可能有其他事务修改这些行。或者修改引用表的某些外键。请阅读维基页面并运行这些语句来调查造成这些锁定的原因。没有更多信息是不可能的。 –