暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

人大金仓数据库KingbaseES 物化视图

原创 数据猿 2024-08-15
434


金仓数据库KingbaseES 物化视图

关键字:

物化视图

物化视图概述

物化视图是数据库中的一种对象,它存储了查询的结果,并定期刷新以保持数据的最新状态。与普通视图不同,物化视图的将数据存储在数据库中,从而提高查询性能,特别是在涉及大量数据和复杂查询的情况下。物化视图反映的是某个查询的结果或者是中间结果,其本身是会存储数据的,当数据量比较小时可以存储在内存,但数据量比较大的时候就会存储在磁盘上。物化视图主要用于预先计算并保存比较耗时的操作的结果,比如表连接或者聚集操作等。使用物化视图可以避免重复进行耗时的操作,从而提升查询性能。

物化视图的使用场景

(1)、物化视图用于在OLAP(在线分析与处理)领域,是用于加速时效性要求不高的长时间复杂查询。

(2)、物化视图支持建立索引以加快查询速度。

(3)、基表数据更新不频繁,但是表的操作或者连接操作比较耗时,使用比较频繁。

(4)、查询中使用外部数据库的表,扫描该表会比较慢,可以通过物化视图将外部数据库表数据存储起来(需要手动刷新物化视图)。

物化视图的缺点

(1)、不支持通过CREATE OR RERPLACE语法重建物化视图。

(2)、重建只能先删除再重建。

(3)、删除以后,该视图上所有的索引都会丢失。

(4)、KES不支持物化视图自动更新和增量更新

(5)、每次刷新数据时都要执行一次REFRESH MATERIALIZED VIEW操作

(6)、要想实现自动刷新,必须使用类似crontab、pgAgent定时任务或者是触发器。

所以如果原始表的数据更新比较频繁,物化视图刷新比较慢的情况下,不适合使用物化视图。所以最终是否需要使用物化视图,需要结合具体的场景决定。

物化视图的基本操作

基本语法:

# \h CREATE MATERIALIZED VIEW

命令:CREATE MATERIALIZED VIEW

说明: 建立新的物化视图

语法:

CREATE MATERIALIZED VIEW [ IF NOT EXISTS ] 表名

[ (列名称 [, ...] ) ]

[ USING 方法 ]

[ WITH ( 存储参数 [= 值] [, ... ] ) ]

[ TABLESPACE 表空间的名称 ]

AS 查询

[ WITH [ NO ] DATA ]

建立物化视图:

create materialized view my_materialized AS SELECT * FROM km_user;

在物化视图上建立索引:

create unique index my_materialized_username_index on my_materialized(username);

刷新物化视图:

REFRESH MATERIALIZED VIEW concurrently my_materialized;

聚簇物化视图:

cluster my_materialized using my_materialized_username_index;

删除物化视图:

drop materialized view my_materialized;

参考资料

《KingbaseES产品手册》

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论