Search CTRL + K

Postgresql Materialized View

PostgreSQL 的物化视图一般用于缓存复杂、昂贵但不要求实时的查询结果。与普通视图不同,物化视图是真实存在的表,并且需要手动更新数据。

与 ClickHouse 的 物化视图 区别

能力 ClickHouse 物化视图 PG 物化视图
存储数据 不存储数据,对物化视图的插入、查询会被重定向到目标表 会存储数据
查询优化 对物化视图的查询不会被优化(WHERE-TO-PREWHERE) 充分利用 PG 规则系统的查询重写能力 [1],和查询普通表性能相当
更新方式 流式更新,源表插入实时由物化视图处理 手动更新,需要手动执行 REFRESH MATERIALIZED VIEW 更新物化视图;分为增量更新和全量更新 [^3]
使用场景 实时性要求较高的场合;更偏向于系统内部的实时 ETL 能力 对数据实时性要求不高的场合

Materialized views cache the result of a complex and expensive query and allow you to refresh this result periodically.[2]


  1. https://www.postgresql.org/docs/9.4/rule-system.html ↩︎

  2. https://www.postgresqltutorial.com/postgresql-views/postgresql-materialized-views/ ↩︎