【问题标题】:Postgres materialized views with hot standbyPostgres物化视图,热备
【发布时间】:2016-11-22 04:00:35
【问题描述】:

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

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

物化视图在主数据库中重建大约需要 10 秒。我们已经等待备用数据库中的查询超过 30 分钟,而且似乎永远无法完成。

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

我们在文档中找不到任何表明物化视图不能在备用数据库中使用的内容,但似乎确实如此。

有没有人解决这个问题,和/或推荐的解决方法是什么?

【问题讨论】:

  • 在 9.5 中对我来说很好。 pg_stat_activity.waiting 对您的备用查询说了什么?您在哪里/何时/如何刷新您对初选的看法?您的查询是否涉及其他表?
  • 可能是锁定问题。如果会话正在等待其他人持有的锁,请查看 pg_locks
  • @LaurenzAlbe 是的。恢复进程持有一个独占锁。这似乎是一个问题,因为该进程始终在运行。不知道该怎么办?
  • 这里是锁:postgres 14064 0.0 1.1 290108 48324 ? Ss 05:22 0:03 _ postgres:启动进程等待 00000001000000060000000E postgres 23242 0.0 0.0 4508 808 ? 22:02 0:00 | _ sh -c /usr/lib/postgresql/9.3/bin/pg_standby /var/lib/postgresql/master_archive 00000001000000060000000E pg_xlog/RECOVERYXLOG 00000001000000060000000C postgres 23243 0.0 0.0 4372 796? 22:02 0:00 | _ /usr/lib/postgresql/9.3/bin/pg_standby /var/lib/postgresql/master_archive 00000001000000060000000E pg_xlog/RECOVERYXLOG 00000001000000060000000C
  • 恢复进程锁定视图是可以的,但要重新释放锁定。主节点上的物化视图是否有锁定?

标签: postgresql database-replication


【解决方案1】:

根据 PostgreSQL 文档 - Hot Standby 有一种方法可以通过为

分配适当的值来处理查询冲突

max_standby_archive_delay & max_standby_streaming_delay

定义 WAL 应用程序中允许的最大延迟。在您的情况下,较高的值可能更可取。

【讨论】:

    猜你喜欢
    • 2014-05-16
    • 2018-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-15
    • 2020-12-03
    • 1970-01-01
    相关资源
    最近更新 更多