刷新postgres物化视图的性能

Stu*_*ver 10 postgresql amazon-aurora

我正在探索物化视图来创建非规范化视图,以避免连接多个表以提高读取性能。API将从物化视图中读取数据以向客户端提供数据。

\n

我正在使用 amazon aurora postgres(版本 11)。

\n

我在物化视图 (MV) 上使用唯一索引,以便可以同时使用 \xe2\x80\x9crefresh\xe2\x80\x9d 选项。

\n

但我注意到,当源表中只有一小部分行得到更新并且我尝试刷新视图时,速度非常慢。事实上,比第一次填充视图要慢。例如:第一次填充 MV 需要大约 30 分钟,刷新需要一个多小时。不到 1% 的行已更新。生成 MV 涉及的主要三个表大约有 1800 万、2700 万和 4000 万行。

\n

物化视图刷新的及时性很重要,这样数据就不会过久陈旧。

\n

我可以使用自定义表来存储非规范化数据而不是物化视图,但必须实现刷新数据的逻辑。因此,如果可能的话,计划避免这种情况。

\n

有什么办法可以加快物化视图的刷新过程吗?

\n

如果您需要更多详细信息,请告诉我。

\n

谢谢\n基兰

\n

Lau*_*lbe 6

即使几乎没有发生任何变化,刷新物化视图也很慢,因为每次刷新视图时,都会运行定义查询。

使用会使CONCURRENTLY操作变得更慢,因为它不是对物化视图内容进行批量替换,而是对现有数据进行修改。

也许您可以创建一个非规范化表,只要修改基础表,该表就会由触发器更新。