更新查询 Postgresql 更新缓慢
Posted
技术标签:
【中文标题】更新查询 Postgresql 更新缓慢【英文标题】:Slow update on update query Postgresql 【发布时间】:2018-08-23 14:55:38 【问题描述】:我对包含 3600 万行的表运行更新查询。 此请求需要 45 分钟才能运行。已处理的字段已编入索引,并且数据库位于 ssd 上。
UPDATE batch_item SET processed=true
你知道为什么这么长吗?
【问题讨论】:
这会更新表中的所有行 - 这需要一些时间。然而,更新 3600 万行应该不会花费 那么 的时间。我的猜测是在那段时间它正在等待一些行锁,因为其他事务也在更新一些行 我有这种同时运行的查询:SHOW TRANSACTION ISOLATION LEVEL
顺便说一句:如果您不在查询中添加分号,则可能需要很长时间(假设是 psql 前端)
@joop 我使用 datagrip 并且不需要分号来启动请求:-)
【参考方案1】:
我不知道您的索引有多重要以及它的 100% 可用性是否至关重要,但删除索引、设置值并在最后重新添加索引可能会节省您的时间。
这里有一些关于批量更新操作的有用信息:https://www.codacy.com/blog/how-to-update-large-tables-in-postgresql/
【讨论】:
以上是关于更新查询 Postgresql 更新缓慢的主要内容,如果未能解决你的问题,请参考以下文章