首页 > 数据库 >GaussDB数据库特性-物化视图简介

GaussDB数据库特性-物化视图简介

时间:2024-11-25 16:02:09浏览次数:9  
标签:-- MATERIALIZED GaussDB 视图 物化 全量 VIEW

一、前言
随着企业数据量的不断增长和业务需求的复杂性增加,选择一个高效、可靠且智能的数据存储和管理解决方案变得越来越重要。GaussDB是一种先进的关系型数据库管理系统,为企业提供了强大的数据处理能力,其物化视图(Materialized Views)功能在数据查询和管理方面具有重要作用。本文以GaussDB数据库为例,将简单介绍一下物化视图的概念、语法及其示例。

二、概述
物化视图实际上就是一种特殊的物理表,物化视图是相对普通视图而言的。普通视图是虚拟表,应用的局限性较大,任何对视图的查询实际上都是转换为对SQL语句的查询,性能并没有实际上提高。而物化视图实际上就是存储SQL所执行语句的结果,起到缓存的效果。 物化视图在GaussDB数据库中有两种表现形式,分别是全量物化视图和增量物化视图。

三、全量物化视图(GaussDB)
GaussDB数据库中全量物化视图的概述:全量物化视图仅支持对创建好的物化视图做全量更新,而不支持做增量更新。创建全量物化视图语法和CREATE TABLE AS语法一致,不支持对全量物化视图指定NodeGroup创建。

1、语法格式
创建全量物化视图

CREATE MATERIALIZED VIEW [ view_name ] AS { query_block };

全量刷新物化视图

REFRESH MATERIALIZED VIEW [ view_name ];

查询物化视图

SELECT * FROM [ view_name ];

删除物化视图

DROP MATERIALIZED VIEW [ view_name ];

2、示例
1)创建测试表,准备测试数据

--创建测试表
DROP TABLE IF EXISTS company;
CREATE TABLE company (
  id int4 PRIMARY KEY,
  name varchar(10)  NOT NULL,
  age int4 NOT NULL,
  address varchar(20) NOT NULL,
  salary float4 NOT NULL
);

--插入测试数据
INSERT INTO company VALUES (1, 'Paul', 32, 'California', 20000);
INSERT INTO company VALUES (2, 'Allen', 25, 'Texas', 15000);

2)创建全量物化视图

--创建全量物化视图
CREATE MATERIALIZED VIEW v_test AS select count(*) as num  from company;

--查询物化视图结果
SELECT * FROM v_test;

3)再次向物化视图中源表插入数据,并刷新全量物化视图

--再次向物化视图中源表插入数据
INSERT INTO company VALUES (3, 'Teddy', 23, 'Norway', 20000);
INSERT INTO company VALUES (4, 'ZhangSan', 30, 'BeiJing', 30000);

--对全量物化视图做全量刷新
REFRESH MATERIALIZED VIEW v_test;

--查询物化视图结果
SELECT * FROM v_test;

4)删除物化视图

--删除物化视图
DROP MATERIALIZED VIEW v_test;

四、增量物化视图(GaussDB)
GaussDB数据库中增量物化视图概述:增量物化视图顾名思义就是可以对物化视图增量刷新,需要用户手动执行语句完成对物化视图在一段时间内的增量数据进行刷新。与全量创建物化视图不同在于目前增量物化视图所支持场景较小,目前物化视图创建语句仅支持基表扫描语句或者UNION ALL语句。

1、语法格式
创建增量物化视图

CREATE INCREMENTAL MATERIALIZED VIEW [ view_name ] AS { query_block };

增量刷新物化视图

REFRESH INCREMENTAL MATERIALIZED VIEW [ view_name ];

查询物化视图

SELECT * FROM [ view_name ];

删除物化视图

DROP MATERIALIZED VIEW [ view_name ];

2、示例

--创建增量物化视图(复用上面的源表company)
CREATE INCREMENTAL MATERIALIZED VIEW v_test2 AS SELECT * FROM company;

--查询物化视图结果
SELECT * FROM v_test2;

--插入数据
INSERT INTO company VALUES (5, 'LiSi', 28, 'ShangHai', 35000);

--增量刷新物化视图
REFRESH INCREMENTAL MATERIALIZED VIEW v_test2;

--查询物化视图结果
SELECT * FROM v_test2;

--删除物化视图
DROP MATERIALIZED VIEW v_test2;

五、物化视图的不足与注意事项
1、物化视图的不足
物化视图也存在一些不足之处:

物化视图需要占用额外的存储空间来存储查询结果,这可能会增加数据库的维护成本。
其次,物化视图可能无法实时更新,对于需要实时响应的业务需求可能不够灵活。
此外,物化视图的创建和维护需要一定的计算资源和时间成本,对于大规模数据集和高并发查询场景可能存在一定的性能压力。
2、物化视图注意事项
在使用GaussDB数据库物化视图时,需要注意以下事项:

应根据业务需求合理选择物化视图的创建时机和更新策略,避免不必要的计算和存储开销。
应充分考虑物化视图的数据来源和查询范围,确保物化视图的数据准确性和完整性。
需要关注物化视图的性能表现,对于可能出现性能瓶颈的场景,应采取相应的优化措施。
应定期评估物化视图的效用,根据业务变化及时进行调整和优化。
3、问题经验示例
1)当删除物化视图中的源表时会报错,报错信息如下截图,可参考。

在这里插入图片描述

2)增量物化视图目前不支持聚合函数,报错信息如下图,可参考。
在这里插入图片描述

六、小结
GaussDB数据库物化视图是一种重要的数据处理工具,它通过预先计算和存储查询结果,极大地提高了数据查询效率。物化视图的优点在于它们可以显著减少查询时间,提高数据处理速度,并支持复杂的查询和分析操作。另外,物化视图还具有可定制性,用户可以根据业务需求自定义查询结果和更新策略。最后,在实际应用中,应根据具体情况充分考虑其优缺点和使用注意事项,以实现最佳的数据管理效果。

——结束

​https://carrier.huawei.com/cn/products/it-new/cloud/dws

标签:--,MATERIALIZED,GaussDB,视图,物化,全量,VIEW
From: https://www.cnblogs.com/xiaoxu0211/p/18567832

相关文章

  • 对GaussDB数据库和数据管理的简单介绍
    一、前言数据库与数据管理有着密切的关系,两者共同构成了一个完整的、可扩展的数据库管理系统。数据库是用于存储数据的系统,为数据提供了安全、可靠、可扩展和可管理的存储环境。随着信息技术的飞速发展,数据已经成为企业的核心资产之一。在这个数据驱动的时代,数据管理成为了企业......
  • 如何设计好分布式数据库,这个策略很重要(GaussDB)
    ​数据库是应用和计算机的核心组成,试想,如果没有数据库,就像人的大脑没有了记忆一样,信息也得不到共享,那么,对开发者来说,如何设计一款高效易用的数据库至关重要。GaussDB是企业级分布式数据库,具备分布式强一致、有效降低容灾成本、支持PB级海量数据、智能诊断等优点,是当下炙手可热的......
  • GaussDB技术解读系列:如何迁移到GaussDB_
    ​迁移是数据库选型过程中客户最为关心的话题之一,经过大量的沟通调研,我们总结了三个客户在数据库迁移方面的主要期望:迁移不影响业务运行(安心),迁移不能丢数据(放心),迁移实施起来简单(省心)。本文从客户视角的三个疑问出发,一起了解华为云GaussDB数据库的迁移解决方案具有哪些核心技术,如......
  • GaussDB数据库SQL系列-LOCK TABLE
    一、前言GaussDB是一款高性能、高可用的分布式数据库,广泛应用于各类行业和场景。在GaussDB中,锁是实现并发控制的关键机制之一,用于协调多个事务之间的数据访问,确保数据的一致性和完整性。本文将围绕GaussDB数据库的LOCKTABLE做一简单介绍。二、GaussDB数据库的锁GaussDB提供了......
  • GaussDB数据库SQL系列-动态语句
    一、前言在数据库中构建动态SQL语句是指根据不同的条件或参数创建不同的SQL语句。这通常是为了适应不同的业务需求,提高SQL的灵活性和效率。GaussDB数据库是一款具备高性能、高可用性和高扩展性的关系型数据库,它提供了丰富的功能和工具,支持动态SQL语句的构建。下面我们将介绍如何......
  • GaussDB如何创建修改数据库和数据表
    一、背景GaussDB是一款由华为开发的企业级分布式数据库,具有高性能、高可用、高可靠性等特点,广泛应用于各种业务场景。本指南将介绍如何在GaussDB中创建数据库和数据表,修改表结构,并添加约束。二、创建数据库和数据表创建数据库在GaussDB中创建数据库可以使用CREATEDATA......
  • 华为GaussDB数据库包括:事务性(OLTP)数据库、分析型(OLAP)数据库和混合负载(HTAP)数据库
    华为GaussDB数据库包括:事务性(OLTP)数据库、分析型(OLAP)数据库和混合负载(HTAP)数据库。这里需要解释下OLTP、OLAP、HTAP之间的区别,这也是数据库最基本的内容。据库系统一般分为两种类型:一种是面向前台应用的,应用比较简单,但是重吞吐和高并发的OLTP类型;一种是重计算的,对大数据集进行统......
  • GaussDB技术解读——GaussDB架构介绍之集群管理层(CM)关键技术方案
    GaussDBKernelV5集群管理层关键模块如下。图4集群管理层组件设计图CM组件提供了四种服务CMAgent,CMServer,OMMonitor,cm_ctl,与各类实例服务组件(CN,DN,GTM等)一起构成了整个数据库集群系统。cm_ctl通过命令行执行集群的启动、停止、状态查询、主备倒换、备机重......
  • GaussDB技术解读——GaussDB架构介绍之全局事务管理层(GTM)关键技术方案
    GTM仅处理全局时间戳请求,64位CSN递增,几乎都是CPU++和消息收发操作。不是每次都写ETCD,而是采用定期持久化到ETCD里,每次写ETCD的CSN要加上一个backup_step(100w),一旦GTM故障,CSN从ETCD读取出来的值保证单调递增。当前GTM只完成CSN++,预估可以支持200M/s请求。GTM处理......
  • GaussDB技术解读——GaussDB架构介绍之数据持久化存取层(DataNode)关键技术方案
    数据持久化存取层(DataNode)关键技术方案Datanode节点主要负责数据的持久化和快速写入、读取。数据持久化采用物理日志wal,事务提交wal刷盘,对外提供逻辑日志功能,反解析物理日志为SQL逻辑日志。图1datanode数据持久化Astore:存储格式为追加写优化设计,其多版本元组采用新、老版......