第十八课 第18天 | openGauss逻辑结构:视图管理
学习目标
掌握openGauss视图的管理:创建视图、删除视图、查询视图的信息、修改视图的信息。
课程学习
- 创建视图
--创建模式、表和插入数据
su - omm
gsql -r
Create schema tpcds;
CREATE TABLE tpcds.customer
( c_customer_sk integer, c_customer_id char(5), c_first_name char(6), c_last_name char(8)
) ;
INSERT | INT | O tpcds.customer VALUES |
(6885, | 1, | 'Joes', 'Hunter'), |
(4321, | 2, | 'Lily','Carter'), |
(9527, | 3, | 'James', 'Cook'), |
(9500, | 4, | 'Lucy', 'Baker'); |
--创建视图
CREATE VIEW tpcds.customer_details_view_v1 AS SELECT * FROM tpcds.customer
WHERE c_customer_sk > 5400;
--查看视图内容
select * from tpcds.customer_details_view_v1;
- 基于视图建立新的视图
create VIEW tpcds.part_view as SELECT * FROM tpcds.customer_d
--查看新的视图
select * from tpcds.part_view;
- 创建物化视图
普通视图在查询中是实时进行计算的。如果建立视图的基表数据很多, 使用视图的时候, 进行实时计算视图表示的结果集, 将消耗很大的计算机资源,并且费时很长。
物化视图提前计算出视图的结果集,并将该结果集保存在数据库里。
如果更新了基表,物化视图将过期。也就是说,基表更新后,物化视图不能反映最新的数据情况。因此在基表发生变化的时候, 需要对物化视图进行更新。
--创建基表
drop materialized view if exists mv_test;
drop table if exists test;
create table test(id serial primary key,testnum serial);
insert into test(testnum) values(generate_series(1,100000));
--创建物化视图:
create materialized view mv_test as select * from test where
--查看物化视图目前有多少行记录:
select count(*) from mv_test;
- 普通视图相关的系统表pg_views
--系统视图pg_views
select * from pg_views where schemaname = 'tpcds' or schemana
5.物化视图相关的系统表GS_MATVIEW
--GS_MATVIEW系统表提供了关于数据库中每一个物化视图的信息。select * from GS_MATVIEW;
- 手动更新物化视图
--向基表test插入数据,查看物化视图有多少行记录:
insert into test(testnum) values(generate_series(1,100000));
select count(*) from mv_test;
--手动更新物化视图,并查看更新物化视图后,物化视图有多少行记录:
refresh materialized view mv_test;
select count(*) from mv_test;
- 删除视图
--删除普通视图
DROP view tpcds.part_view;
DROP view TPCDS.customer_details_view_v1;
--删除物化视图
DROP MATERIALIZED VIEW mv_test;
练习内容回顾
- 创建表,创建普通视图
- 使用视图创建新的视图
- 创建物化视图
- 手动更新物化视图
- 删除创建的视图总结:
普通视图平时练习接触比较多, 通过基本表创建视图, 或者通过视图创建新的视图,都很容易理解。但是物化视图平时练习接触比较少。
1.物化视图基本概念:
物化视图是相对普通视图而言的。普通视图是虚拟表, 而物化视图实际上就是存储SQL执行语句的结果, 可以直接使用数据而不用重复执行查询语句,从而提升性能。
按照刷新方式物化视图分为两种:
- 全量物化视图:仅支持对已创建的物化视图进行全量更新,而不支持进行增量更新。创建全量物化视图语法和CREATE TABLE AS语法类似。
- 增量物化视图:可以对物化视图增量刷新,需要用户手动执行语句完成对物化视图在一段时间内的增量数据刷新。与全量创建物化视图的不同在于目前增量物化视图所支持场景较小。
(1). 全量物化视图:
- 全量物化视图语法格式 :
CREATE MATERIALIZED VIEW view_name AS query;
- 全量刷新物化视图
REFRESH MATERIALIZED VIEW
- 删除物化视图
DROP MATERIALIZED VIEW [ view_name ];
- 查询物化视图
SELECT * FROM [ view_name ];
- 更改一个现有物化视图的多个辅助属性
ALTER MATERIALIZED VIEW
语法格式 修改物化视图的所属用户。
ALTER MATERIALIZED VIEW [ IF EXISTS ] mv_name OWNER TO n
ew_owner;
new_owner 该物化视图的新拥有者的用户名。 new_name 该物化视图的新名称。
注意事项:
只有物化视图的所有者有权限执行ALTER TMATERIALIZED VIEW命令, 系统管理员默认拥有此权限。 不支持更改物化视图结构。
(2)增量物化视图:
- 创建增量物化视图
CREATE INCREMENTAL MATERIALIZED VIEW [ view_name ] AS {
query_block };
- 增量刷新物化视图
REFRESH INCREMENTAL MATERIALIZED VIEW [ view_name ];
- 删除增量物化视图
DROP INCREMENTAL MATERIALIZED VIEW[view_name];
- 修改物化视图的辅助属性
ALTER INCREMENTAL MATERIALIZED VIEW




