温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

postgresql什么是物化视图

发布时间:2026-09-07 03:46:39 来源:亿速云 阅读:107 作者:小樊 栏目:数据库

在 PostgreSQL 中,物化视图(Materialized View) 是一种物理存储查询结果的数据库对象。

可以理解为:

视图(View)是“查询的别名”,物化视图是“查询结果的快照”。


一、普通视图 vs 物化视图

对比项 普通视图(View) 物化视图(Materialized View)
是否存储数据 否(每次查询都执行 SQL) 是(数据已落盘)
查询速度 慢(依赖底层表) 快(直接读结果)
数据实时性 实时 非实时(需刷新)
能否建索引 依赖基表 ✅ 可以单独建索引

二、物化视图的特点

  1. 数据是“冻结”的

    • 创建时执行一次查询并保存结果
    • 基表变化后,不会自动更新
  2. 需要手动或定时刷新

    REFRESH MATERIALIZED VIEW mv_name;
    
  3. 适合场景

    • 复杂统计查询
    • 报表系统
    • 跨表聚合
    • 读多写少

三、基本用法示例

1. 创建物化视图

CREATE MATERIALIZED VIEW mv_sales_summary AS
SELECT user_id, SUM(amount) AS total
FROM orders
GROUP BY user_id;

2. 查询物化视图

SELECT * FROM mv_sales_summary;

3. 创建索引(加快查询)

CREATE INDEX idx_mv_user ON mv_sales_summary(user_id);

4. 刷新物化视图

-- 完全刷新(会锁表)
REFRESH MATERIALIZED VIEW mv_sales_summary;

-- 并发刷新(不阻塞查询,PostgreSQL 9.4+)
REFRESH MATERIALIZED VIEW CONCURRENTLY mv_sales_summary;

⚠️ 使用 CONCURRENTLY 必须至少有一个唯一索引


四、优缺点总结

✅ 优点

  • 查询性能极高
  • 可建索引
  • 适合复杂聚合

❌ 缺点

  • 数据不是实时的
  • 占用存储空间
  • 需要维护刷新策略

五、典型使用场景

  • 日/月报表
  • 数据分析平台
  • 大表聚合查询
  • 降低主库压力

如果你愿意,我也可以帮你:

  • 设计物化视图刷新策略
  • 对比 物化视图 vs 缓存(Redis)
  • 写定时刷新(cron / pg_cron)方案
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手