我觉得
REFRESH MATERIALIZED VIEW
和pg_dump
之间有问题。
第一个必须等待第二个(或者相反?)。
为什么请?
文档描述了
CONCURRENTLY
的REFRESH MATERIALIZED VIEW
选项:
如果没有此选项,影响大量行的刷新将倾向于使用更少的资源并更快地完成,但可能会阻止其他试图从物化视图读取的连接。
所以物化视图在刷新时被所有并发访问阻塞。
pg_dump
另一方面,需要访问物化视图。所以谁先到谁就会挡住另一个。
有两种选择:
如果可以在物化视图上定义唯一索引,并且不介意刷新时间较长,可以使用
REFRESH MATERIALIZED VIEW CONCURRENTLY
使用
pg_basebackup
而不是pg_dump
来备份你的数据库