加载中...

| PostgreSQL 刷新命令 | REFRESH MATERIALIZED VIEW [CONCURRENTLY] |
| Oracle 高级特性 | 增量刷新(Materialized View Log) |
| 适用场景 | OLAP、报表聚合、BI Dashboard |
普通视图(View)只是保存了一条 SELECT 语句,每次查询视图时都实时执行那条 SQL,没有存储任何数据。物化视图(Materialized View)则真的把查询结果存成了一张物理表,查询时直接读这张表,速度与扫描普通表无异,不管底层 JOIN 多少张表、聚合多少亿行,对用户来说只是一次简单的全表扫描。[1]
物化视图需要定期刷新才能反映底层数据的变化。PostgreSQL 使用 REFRESH MATERIALIZED VIEW 命令手动刷新,从 9.4 起支持 CONCURRENTLY 选项,刷新期间不锁表。Oracle 支持按需刷新(ON DEMAND)和提交时刷新(ON COMMIT),后者每次底层数据变化都自动更新,但维护成本更高。
增量刷新(Incremental Refresh)是物化视图的高级特性:不重算全量结果,只根据底层变化更新差量。Oracle 的物化视图日志(Materialized View Log)就是实现这个的机制,PostgreSQL 目前原生不支持增量刷新,但 TimescaleDB 和一些第三方扩展补充了这个能力。
在 BI 和数据仓库场景(如 Redshift、BigQuery、Snowflake)中,物化视图几乎是标配——用于预聚合 Dashboard 指标,把几分钟的查询压缩到毫秒级响应。

| PostgreSQL 刷新命令 | REFRESH MATERIALIZED VIEW [CONCURRENTLY] |
| Oracle 高级特性 | 增量刷新(Materialized View Log) |
| 适用场景 | OLAP、报表聚合、BI Dashboard |
登录 后参与讨论
暂无讨论,来发表第一条评论吧