物化视图
物化视图
物化视图与普通视图的区别在于,物化视图是物理上真实存在的表。
物化视图的创建
\h create materialized view
Command: CREATE MATERIALIZED VIEW
Description: define a new materialized view
Syntax:
CREATE MATERIALIZED VIEW [ IF NOT EXISTS ] table_name
[ (column_name [, ...] ) ]
[ USING method ]
[ WITH ( storage_parameter [= value] [, ... ] ) ]
[ TABLESPACE tablespace_name ]
AS query
[ WITH [ NO ] DATA ]
与creat table as 基本相同,但是物化视图不同于table 的是物化时候中的数据内容可以刷新。
物化视图的更新
postgres=# \h REFRESH
Command: REFRESH MATERIALIZED VIEW
Description: replace the contents of a materialized view
Syntax:
REFRESH MATERIALIZED VIEW [ CONCURRENTLY ] name
[ WITH [ NO ] DATA ]
URL: https://www.postgresql.org/docs/12/sql-refreshmaterializedview.html
- 全量更新
全量更新锁表速度快
- 增量更新 (CONCURRENTLY)
增量更新做的操作是将当前视图表中的数据和query中的数据做一个join操作,然后才将差量做填充。
应用场景
对抽取数据结果集访问频率高,但是更新变化频率低。
对关注的数据结果集进行抽象为物化视图。方便后面应用的频繁读取。