云服务器内容精选

  • 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查询)。 父主题: 物化视图
  • 物化视图改写能力支持范围 物化视图支持的类型 BOOLEAN、DECIMAL、DOUBLE、REAL/FLOAT、INT、BIGINT、SMALLINT、TINYINT、CHAR/VARCHAR、DATE、TIME、TIMESTAMP、INTERVAL YEAR TO MONTH、INTERVAL DAY TO SECOND、BINARY/VARBINARY、UUID。 物化视图改写支持的函数 转换函数:只支持CAST函数。 字符串函数:支持所有字符串函数,包括char_length、character_length、chr、codepoint、decode、encode、find_in_set、format_number、locate、hamming_distance、instr、levenshtein、levenshtein_distance、ltrim、lpad、octet_length、position、quote、repeat2。 数学运算符:支持所有数学运算符。 聚合函数:支持的聚合函数包括 COUNT、SUM、MIN、MAX、AVG、LEAD、LAG、FIRST_VALUE、LAST_VALUE、COVAR_POP、COVAR_SAMP、REGR_SXX、REGR_SYY、STDDEV_POP、STDDEV_SAMP、VAR_POP、VAR_SAMP、ROW_NUMBER、RANK、PERCENT_RANK、DENSE_RANK、CUME_DIST。 以下场景,物化视图不支持对包含了函数的SQL查询进行改写: SQL中包含无参函数 SQL中包含了HetuEngine支持的会根据参数的类型获得不同类型的返回值的函数 SQL中函数存在嵌套使用,或者是使用的函数会发生异常导致重写失败的函数 物化视图创建语句改写不支持二段式表名,支持一段式和三段式表名。 如支持改写表名为“hive.mvschema.t1”和“t1”,不支持改写表名为“mvschema.t1”。
  • ClickHouse物化视图概述 由于TTL规则不会从原始表中同步到物化视图表,因此源表中带有TTL规则时,物化视图表同样需要配置TTL规则,并且建议与源表保持一致。 表1 普通物化视图与projection对比 物化视图类型 原表数据与物化视图一致性 灵活性 物化视图开发及维护复杂度 普通物化视图 数据从原表同步到物化视图需要时间窗。 灵活性较高,有新的业务可开发新的物化视图。 可开发复杂逻辑SQL语句的物化视图。 复杂度较高,需要开发很多物化视图,每个物化视图都需要单独去管理和维护。 projection 数据实时同步,数据写入即可查询到物化视图最新数据。 创建表时指定的物化视图语法,新的SQL业务需要修改表结构。 不需要开发很多物化视图,任意查询SQL会自动重写命中物化视图。 Projection仅在 MRS 3.2.0及以上的版本集群中支持。 父主题: ClickHouse物化视图设计
  • 语法格式 创建全量物化视图 CREATE MATERIALIZED VIEW [ view_name ] AS { query_block }; 刷新全量物化视图 REFRESH MATERIALIZED VIEW [ view_name ]; 删除物化视图 DROP MATERIALIZED VIEW [ view_name ]; 查询物化视图 SELECT * FROM [ view_name ];
  • 示例 -- 准备数据CREATE TABLE t1(c1 int, c2 int);INSERT INTO t1 VALUES(1, 1);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);-- 对全量物化视图做全量刷新gaussdb=# REFRESH MATERIALIZED VIEW mv;REFRESH MATERIALIZED VIEW-- 查询物化视图结果gaussdb=# SELECT * FROM mv; count ------- 3(1 row)-- 删除物化视图gaussdb=# DROP MATERIALIZED VIEW mv;DROP MATERIALIZED VIEW
  • 语法格式 创建增量物化视图 CREATE INCREMENTAL MATERIALIZED VIEW [ view_name ] AS { query_block }; 全量刷新物化视图 REFRESH MATERIALIZED VIEW [ view_name ]; 增量刷新物化视图 REFRESH INCREMENTAL MATERIALIZED VIEW [ view_name ]; 删除物化视图 DROP MATERIALIZED VIEW [ view_name ]; 查询物化视图 SELECT * FROM [ view_name ];
  • 示例 -- 准备数据CREATE TABLE t1(c1 int, c2 int);INSERT INTO t1 VALUES(1, 1);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