2016-11-22 55 views
1

我们使用Postgres(9.3)Hot Standby构建数据库的只读副本。我们有一个从物化视图读取的UI。Postgres具有热备份的物化视图

当我们尝试从备用数据库中的物化视图读取时,查询挂起。

物化视图在master数据库中重建需要10秒钟。我们已经等待了超过30分钟的备用数据库中的查询,它似乎永远不会完成。

值得注意的是,物化视图确实存在于备用数据库中。我们无法刷新它(因为数据库只读)

我们无法在文档中找到任何指示物化视图无法用于备用数据库的情况,但似乎是这种情况。

有没有人得到这个工作,和/或什么是推荐的解决方法?

+0

在9.5中适合我。什么['pg_stat_activity.waiting'](https://www.postgresql.org/docs/9.3/static/monitoring-stats.html#PG-STAT-ACTIVITY-VIEW)对你的备用查询说?您在哪里/何时/如何刷新您对小学的看法?你的查询是否涉及其他表? –

+0

可能是一个锁定问题。如果会话正在等待其他人持有的锁,请查看“pg_locks”。 –

+0

@LaurenzAlbe是的。恢复过程中有一个独占锁。这似乎是一个问题,因为这个过程总是在运行。不知道该怎么办? –

回答

0

根据PostgreSQL的文档 - Hot Standby有通过向

max_standby_archive_delay & max_standby_streaming_delay

定义在WAL应用程序中的最大允许延时分配正确的价值观来处理查询冲突的方式。在你的情况下,高价值可能更可取。