You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL物化视图刷新与pg_dump能否并发执行?

REFRESH MATERIALIZED VIEW 与 pg_dump 的等待问题分析

核心原因:锁级别冲突

PostgreSQL中不同操作的锁级别兼容性,直接决定了REFRESH MATERIALIZED VIEW和pg_dump之间的等待关系,分两种刷新模式说明:


1. 全量刷新(REFRESH MATERIALIZED VIEW)

全量刷新会获取ACCESS EXCLUSIVE锁——这是PostgreSQL中最严格的锁类型,与所有其他针对该物化视图的操作锁(包括读锁)冲突。

  • 若pg_dump先启动:pg_dump读取物化视图时会持有ACCESS SHARE锁(普通读锁),此时全量刷新无法获取所需的ACCESS EXCLUSIVE锁,只能等待pg_dump读取完成释放锁后才能执行。
  • 若全量刷新先启动:刷新操作先持有ACCESS EXCLUSIVE锁,pg_dump要读取物化视图必须获取ACCESS SHARE锁,而该锁与ACCESS EXCLUSIVE锁冲突,因此pg_dump会等待刷新完成。

2. 并发刷新(REFRESH MATERIALIZED VIEW CONCURRENTLY)

并发刷新会获取SHARE UPDATE EXCLUSIVE锁,这个锁仅与修改类操作(如其他刷新、DDL)冲突,与读操作的ACCESS SHARE锁兼容。

  • 无论谁先启动,pg_dump的读操作和并发刷新都可以同时进行,不会产生等待。

内容的提问来源于stack exchange,提问作者Christophe Leray

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 18:04:56