登陆数据库
[root@enmoedu ~]# su - omm
Last login: Sat Dec 10 10:13:49 CST 2022 on pts/1
[omm@enmoedu ~]$ gs_om -t status --detail
[ Cluster State ]
cluster_state : Unavailable
redistributing : No
current_az : AZ_ALL
[ Datanode State ]
node node_ip port instance state
----------------------------------------------------------------------------------------------
1 enmoedu 192.168.94.135 15400 6001 /opt/huawei/install/data/dn P Primary Manually stopped
[omm@enmoedu ~]$ gs_om -t start
Starting cluster.
=========================================
[SUCCESS] enmoedu
2022-12-11 11:33:07.145 63954f72.1 [unknown] 140453007490112 [unknown] 0 dn_6001 01000 0 [BACKEND] WARNING: could not create any HA TCP/IP sockets
2022-12-11 11:33:07.146 63954f72.1 [unknown] 140453007490112 [unknown] 0 dn_6001 01000 0 [BACKEND] WARNING: could not create any HA TCP/IP sockets
2022-12-11 11:33:07.162 63954f72.1 [unknown] 140453007490112 [unknown] 0 dn_6001 01000 0 [BACKEND] WARNING: Failed to initialize the memory protect for g_instance.attr.attr_storage.cstore_buffers (1024 Mbytes) or shared memory (1894 Mbytes) is larger.
=========================================
Successfully started.
[omm@enmoedu ~]$ gsql -d enmodb -W enmoedu@1234 -r -p 15400
gsql ((openGauss 3.0.0 build 02c14696) compiled at 2022-04-01 18:12:34 commit 0 last mr )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
enmodb=# 1、创建表,创建普通视图
- 创建模式、表和插入数据
创建模式
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 into tpcds.customer values
(6885, 1, 'joes', 'hunter'),
(4321, 2, 'lily','carter'),
(9527, 3, 'james', 'cook'),
(9500, 4, 'lucy', 'baker');在当前数据库enmodb的tpcds模式下,查看表customer的信息:

在当前数据库enmodb下,不使用tpcds的模式,查看表customer的信息:

说明:一个数据库下,可以有多个模式,多个模式下,可以启用多个对象【这里的对象指的是:表】
- 创建视图
在指定的数据下,且明确哪一个模式下:
create view tpcds.customer_details_view_v1 as
select * from tpcds.customer
where c_customer_sk > 5400;
- 查看视图内容
指定在那个模式下查询视图:
select * from tpcds.customer_details_view_v1;
说明:在同一个数据库下,且不同的模式下,它们可以创建自己的模式下的视图。
2、使用视图创建新的视图
指定在那个模式下创建视图:
create view tpcds.part_view as select * from tpcds.customer_details_view_v1 where c_customer_sk =9527;
- 查看新的视图
指定在那个模式下查询视图:
select * from tpcds.part_view;
3、创建物化视图
普通视图在查询中是实时进行计算的。如果建立视图的基表数据很多,使用视图的时候,进行实时计算视图表示的结果集,将消耗很大的计算机资源,并且费时很长。
物化视图提前计算出视图的结果集,并将该结果集保存在数据库里。
如果更新了基表,物化视图将过期。也就是说,基表更新后,物化视图不能反映最新的数据情况。因此在基表发生变化的时候,需要对物化视图进行更新。
- 创建基表
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 testnum%2=0;
- 查看物化视图目前有多少行记录
select count(*) from mv_test;
4、普通视图相关的系统表pg_views
- 系统视图pg_views
select * from pg_views where schemaname = 'tpcds' or schemaname = 'public';
5、物化视图相关的系统表GS_MATVIEW
- GS_MATVIEW系统表提供了关于数据库中每一个物化视图的信息
select * from gs_matview;
6、手动更新物化视图
- 向基表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;
5、删除创建的视图
- 删除普通视图
drop view tpcds.part_view;
drop view tpcds.customer_details_view_v1;
- 删除物化视图
drop materialized view mv_test;
最后修改时间:2022-12-11 11:58:26
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




