云服务器内容精选

  • 使用HetuEngine物化视图介绍 表2 物化视图使用介绍 阶段 说明 参考章节 物化视图SQL示例 介绍物化视图支持的操作,包括创建物化视图、列举物化视图、查询物化视图等 HetuEngine物化视图SQL示例 配置物化视图改写能力 开启物化视图能力,提高查询的响应效率 配置HetuEngine物化视图改写能力 配置物化视图推荐能力 自动学习并推荐对业务最有价值的物化视图SQL,使在线查询效率获得倍数提升,同时有效降低系统负载压力 配置HetuEngine物化视图推荐能力 配置物化视图缓存能力 可将多次执行并改写后的SQL保存到缓存中,再次执行这条SQL时会直接从缓存中获取改写后的SQL,而不是重新对SQL进行改写,提高查询效率 配置HetuEngine物化视图缓存能力 配置物化视图有效期与数据刷新 设置物化视图的有效期,当前系统只会使用有效期内的物化视图进行自动改写 设置数据定期更新,可定时手动刷新或自动刷新物化视图 配置HetuEngine物化视图的有效期与数据刷新能力 配置智能物化视图 提供自动化物化视图的创建,无需手动执行SQL创建物化视图(推荐使用) 配置HetuEngine智能物化视图能力 查看物化视图自动化任务记录 看任务执行情况,帮助评估集群运行健康状况 查看HetuEngine物化视图自动化任务
  • HetuEngine物化视图权限介绍 物化视图权限如表1。物化视图权限控制依赖Ranger,若关闭Ranger鉴权会带来权限失效的风险。 表1 HetuEngine物化视图权限介绍 操作 catalog mv权限 物化视图存储表的权限 原始物理表的权限 创建物化视图 表的Create权限 NA 对应列的查询权限 删除物化视图 删除表权限 NA NA 刷新物化视图 表的更新权限 NA 对应列的查询权限 修改物化视图属性或状态 表的Alter权限 NA NA 使用物化视图重写查询语句 NA NA 对应列的查询权限 使用物化视图重写查询语句的执行计划(EXPLAIN) NA 对应列的查询权限 对应列的查询权限 查询物化视图 对应列的查询权限 NA NA 物化视图和非物化视图的物理表联合查询 对应列的查询权限 NA 对应列的查询权限 查看物化视图 NA NA NA 查看物化视图的创建语句 表的Show权限 表的Show权限 NA
  • HetuEngine物化视图背景介绍 HetuEngine具备物化视图能力。在实际运用中,将高频访问的SQL查询和有高耗时的算子(连接, 聚合等算子)的SQL通过建立物化视图进行预计算,然后在查询的SQL中将能匹配到物化视图的查询或者子查询转换为物化视图,避免了数据的重复计算,这种情况下往往能较大地提高查询的响应效率。 物化视图通常基于对数据表进行聚合和连接的查询结果创建。 物化视图支持“查询重写”,这是一种优化技术,即将基于原始表编写的查询语句转换为查询一个或多个物化视图语句的等效请求。如下物化视图的SQL示例: create materialized view mv.default.mv1 with(storage_table='hive.default.mv1') AS select id from hive.mvschema.t1; 该物化视图实际数据的存储表为“hive.default.mv1”,在查询重写时,查询SQL“select id from hive.mvschema.t1”会被重写成查询物化视图的表,即“select id from hive.default.mv1”。
  • 使用HetuEngine物化视图场景 与普通的视图相比,物化视图会存储实际数据,占用存储资源,并且会有预计算带来的数据滞后性的问题,因此物化视图推荐在如下场景中使用: 执行频次高的查询。 查询包含非常耗时的操作,比如聚合、连接操作等。 对查询结果数据可以允许有一定的滞后性。 物化视图仅支持对接共部署Hive和外接Hive数据源,并且数据源表的存储格式为ORC或者PARQUET,不支持跨源跨域场景。
  • GS_MATVIEW_DEPENDENCY GS_MATVIEW_DEPENDENCY系统表提供了关于数据库中每一个增量物化视图、基表和mlog表的关联信息。全量物化视图不存在与基表对应的mlog表,不会写入记录。 表1 GS_MATVIEW_DEPENDENCY字段 名称 类型 描述 oid oid 行标识符(隐含属性,必须明确选择)。 matviewid oid 物化视图的oid。 relid oid 物化视图基表的oid。 mlogid oid 物化视图mlog表的oid,mlog表为物化视图日志表,与基表一一对应。 mxmin integer 保留字段。 父主题: 物化视图
  • GS_MATVIEWS GS_MATVIEWS视图显示数据库中每一个物化视图的信息。 表1 GS_MATVIEWS字段 名称 类型 引用 描述 schemaname name PG_NAMESPACE.nspname 物化视图的模式名。 matviewname name PG_CLASS.relname 物化视图名。 matviewowner name PG_AUTHID.rolname 物化视图的所有者。 tablespace name PG_TABLESPACE.spcname 物化视图的表空间名(如果使用数据库默认表空间则为空)。 hasindexes boolean - 如果物化视图有(或者最近有过)任何索引,则此列为真。 definition text - 物化视图的定义(一个重构的SELECT查询)。 父主题: 物化视图
  • GS_MATVIEW GS_MATVIEW系统表提供了关于数据库中每一个物化视图的信息。 表1 GS_MATVIEW字段 名称 类型 描述 oid oid 行标识符(隐含属性,必须明确选择)。 matviewid oid 物化视图的oid。 mapid oid 物化视图map表的oid,map表为物化视图关联表,与物化视图一一对应。全量物化视图不存在对应的map表,该字段为0。 ivm boolean 物化视图的类型,t为增量物化视图,f为全量物化视图。 needrefresh boolean 保留字段。 refreshtime timestamp without time zone 物化视图上一次刷新时间,若未刷新则为null。仅对DN上的增量物化视图维护该字段,其余情况均为null。 父主题: 物化视图
  • GS_MATVIEW GS_MATVIEW系统表提供了关于数据库中每一个物化视图的信息。 表1 GS_MATVIEW字段 名称 类型 描述 oid oid 行标识符(隐含属性,必须明确选择)。 matviewid oid 物化视图的oid。 mapid oid 物化视图map表的oid,map表为物化视图关联表,与物化视图一一对应。全量物化视图不存在对应的map表,该字段为0。 ivm boolean 物化视图的类型,t为增量物化视图,f为全量物化视图。 needrefresh boolean 保留字段。 refreshtime timestamp without time zone 物化视图上一次刷新时间,若未刷新则为null。仅对增量物化视图维护该字段,全量物化视图为null。 父主题: 物化视图
  • GS_MATVIEWS GS_MATVIEWS视图显示数据库中每一个物化视图的信息。 表1 GS_MATVIEWS字段 名称 类型 引用 描述 schemaname name PG_NAMESPACE.nspname 物化视图的模式名。 matviewname name PG_CLASS.relname 物化视图名。 matviewowner name PG_AUTHID.rolname 物化视图的所有者。 tablespace name PG_TABLESPACE.spcname 物化视图的表空间名(如果使用数据库默认表空间则为空)。 hasindexes boolean - 如果物化视图有(或者最近有过)任何索引,则此列为真。 definition text - 物化视图的定义(一个重构的SELECT查询)。 父主题: 物化视图
  • GS_MATVIEW_DEPENDENCY GS_MATVIEW_DEPENDENCY系统表提供了关于数据库中每一个增量物化视图、基表和mlog表的关联信息。全量物化视图不存在与基表对应的mlog表,不会写入记录。 表1 GS_MATVIEW_DEPENDENCY字段 名称 类型 描述 oid oid 行标识符(隐含属性,必须明确选择)。 matviewid oid 物化视图的oid。 relid oid 物化视图基表的oid。 mlogid oid 物化视图mlog表的oid,mlog表为物化视图日志表,与基表一一对应。 mxmin integer 保留字段。 父主题: 物化视图
  • 不支持场景 物化视图中不支持多表Join连接计划以及subquery计划。 不支持WITH子句、GROUP BY子句、ORDER BY子句、LIMIT子句、WINDOW子句、DISTINCT算子、AGG算子以及不支持除UNION ALL外的子查询。 除少部分ALTER操作外,不支持对物化视图中基表执行绝大多数DDL操作。 物化视图不支持增删改操作,只支持查询语句。 不支持用临时表/hashbucket/unlog/分区表创建物化视图。 不支持物化视图嵌套创建(即物化视图上创建物化视图)。 不支持UN LOG GED类型的物化视图,不支持WITH语法。
  • 示例 -- 修改表的默认类型 gaussdb=# set enable_default_ustore_table=off; --准备数据。 gaussdb=# CREATE TABLE t1(c1 int, c2 int); gaussdb=# INSERT INTO t1 VALUES(1, 1); gaussdb=# INSERT INTO t1 VALUES(2, 2); --创建全量物化视图。 gaussdb=# CREATE MATERIALIZED VIEW mv AS select count(*) from t1; CREATE MATERIALIZED VIEW --查询物化视图结果。 gaussdb=# SELECT * FROM mv; count ------- 2 (1 row) --向物化视图中基表插入数据。 gaussdb=# INSERT INTO t1 VALUES(3, 3); INSERT 0 1 --对全量物化视图做全量刷新。 gaussdb=# REFRESH MATERIALIZED VIEW mv; REFRESH MATERIALIZED VIEW --查询物化视图结果。 gaussdb=# SELECT * FROM mv; count ------- 3 (1 row) --删除物化视图,删除表。 gaussdb=# DROP MATERIALIZED VIEW mv; DROP MATERIALIZED VIEW gaussdb=# DROP TABLE t1; DROP TABLE
  • 示例 -- 修改表的默认类型 gaussdb=# set enable_default_ustore_table=off; --准备数据。 gaussdb=# CREATE TABLE t1(c1 int, c2 int); gaussdb=# INSERT INTO t1 VALUES(1, 1); gaussdb=# INSERT INTO t1 VALUES(2, 2); --创建增量物化视图。 gaussdb=# CREATE INCREMENTAL MATERIALIZED VIEW mv AS SELECT * FROM t1; CREATE MATERIALIZED VIEW --插入数据。 gaussdb=# INSERT INTO t1 VALUES(3, 3); INSERT 0 1 --增量刷新物化视图。 gaussdb=# REFRESH INCREMENTAL MATERIALIZED VIEW mv; REFRESH MATERIALIZED VIEW --查询物化视图结果。 gaussdb=# SELECT * FROM mv; c1 | c2 ----+---- 1 | 1 2 | 2 3 | 3 (3 rows) --插入数据。 gaussdb=# INSERT INTO t1 VALUES(4, 4); INSERT 0 1 --全量刷新物化视图。 gaussdb=# REFRESH MATERIALIZED VIEW mv; REFRESH MATERIALIZED VIEW --查询物化视图结果。 gaussdb=# select * from mv; c1 | c2 ----+---- 1 | 1 2 | 2 3 | 3 4 | 4 (4 rows) --删除物化视图,删除表。 gaussdb=# DROP MATERIALIZED VIEW mv; DROP MATERIALIZED VIEW gaussdb=# DROP TABLE t1; DROP TABLE
  • 语法格式 创建增量物化视图 CREATE INCREMENTAL MATERIALIZED VIEW view_name AS query; 全量刷新物化视图 REFRESH MATERIALIZED VIEW view_name; 增量刷新物化视图 REFRESH INCREMENTAL MATERIALIZED VIEW view_name; 删除物化视图 DROP MATERIALIZED VIEW view_name; 查询物化视图 SELECT * FROM view_name;
  • 语法格式 创建增量物化视图 CREATE INCREMENTAL MATERIALIZED VIEW view_name AS query; 全量刷新物化视图 REFRESH MATERIALIZED VIEW view_name; 增量刷新物化视图 REFRESH INCREMENTAL MATERIALIZED VIEW view_name; 删除物化视图 DROP MATERIALIZED VIEW view_name; 查询物化视图 SELECT * FROM view_name;