基于物化视图优化_物化视图(Materialized View)

物化视图是一种数据库对象,缓存了查询结果以提高效率。相对于普通视图,物化视图提供了更快速的访问速度,但需要考虑数据的时效性。常见于数据仓库场景,支持物化视图的数据库包括Oracle, PostgreSQL, SQL Server等。" 117428977,9038808,PHP装饰者模式详解与应用,"['设计模式', 'PHP', '面向对象']
摘要由CSDN通过智能技术生成

物化视图(Materialized View)

本文主要介绍什么是物化视图。

9757473b947cf7a0de64296baa43dbe1.png

普通视图

我们都知道什么是视图。视图是根据基表查询结果建立一个虚拟表,有隐藏查询复杂性,保证数据安全等优点。但有时由于查询过于复杂,以及数据量等原因,使用视图查询会有效率的瓶颈出现。

这时如何进一步优化查询效率呢?物化视图是一个选择。

物化视图

在计算机科学中,物化视图是一个数据库对象,它包含查询的结果。

例如它可以是远程数据的一份本地拷贝,也可以是表或者关联查询结果子集的部分行或者列,也可是聚合函数的查询结果。

创建物化视图的过程叫做物化(Materialzation),这是缓存查询结果的一种形式。,类似于缓存或者记忆化,或者提前计算。

在数据库中使用物化视图,通常是出于效率原因,是一种优化。

在关系型数据库中普通的视图是一种虚拟(virtual)表,而物化视图是将视图的查询结果缓存(cached)到了具体(concrete/materialized)表中。这种方式也是有代价的,因为物化视图的数据可能会过期。

物化视图常用于数据仓库(Data Warehose),在数仓中查询基表可能很耗时。

在物化视图中,可以在任意列上建立索引。相反,在普通的视图中是无法做到的,只能依赖于基表。

支持物化视图的数据库

支持物化视图的数据库:Orcale, PostgreSQL, SQL Server等。

Kafka, Spark都支持流式数据的物化视图

MySQL并不支持物化视图,但实现物化视图可以基于存储过程和触发器或者Flexviews[1]

总结

物化视图是在查询效率上以空间换时间思想。使用时要根据业务应用场景考虑到数据时效性,设置合理的更新频率,在时效性和查询效率达到平衡。

参考

•Materialized_view[2]

References

[1] Flexviews: https://github.com/greenlion/swanhart-tools/tree/master/flexviews[2] Materialized_view: https://en.wikipedia.org/wiki/Materialized_view

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值