首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用物化视图

使用物化视图
EN

Database Administration用户
提问于 2015-03-13 16:50:26
回答 1查看 1.4K关注 0票数 1

我有一个物化视图,大约需要57秒才能创建,我使用的是PostgreSQL 9.4。

当我对表进行插入时,触发器将调用触发器函数,该函数将执行REFRESH MATERIALIZED VIEW CONCURRENTLY view触发器触发after each statement (插入、更新、删除)

所发生的是,做一个插入,它将需要大约57秒。

如何解决这个问题,并仍然使用物化视图?

我已经实现了很长时间,从来没有这个问题,最近我增加了保镖,这可能是原因吗?

EN

回答 1

Database Administration用户

发布于 2015-03-15 04:14:00

通常,只有在对底层表的写访问是罕见的情况下,立即刷新MV才是合理的。语句级触发器比行级触发器要好,但对于大表来说可能仍然太多。我会考虑一种解决方案,每n分钟轮询一次数据库,检查更新。您可以让触发器写入带有单个行的表。

或者你可以用LISTEN/NOTIFY

只要您想立即传播每个更改(几乎),在插入/更新/删除写入手工编织的“物化视图”(一个表)(如@trygvis建议 )上的行级触发器可能会更好。

由于pgbouncer使会话保持打开状态,因此可能存在未提交事务的锁定问题,从而减慢了进程,但我只是在这里推测。您可以在数据库的副本中运行测试,而不需要pgbouncer。或者通过查找pg_stat_activity来检查僵尸事务。

票数 6
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/95214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档