华为云之数据仓库集群GaussDB(DWS)的基本使用【玩转PB级数仓GaussDB(DWS)】

2023-10-10 02:40

本文主要是介绍华为云之数据仓库集群GaussDB(DWS)的基本使用【玩转PB级数仓GaussDB(DWS)】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

华为云之数据仓库集群GaussDB(DWS)的基本使用【玩转PB级数仓GaussDB(DWS)】

  • 一、云数据仓库GaussDB(DWS)介绍
    • 1.GaussDB(DWS)简介
    • 2.GaussDB(DWS)使用场景
    • 3.本次实践目的
  • 二、创建虚拟私有云VPC
    • 1.VPC介绍
    • 2.进入虚拟机私有云界面
    • 3.创建虚拟私有云VPC
    • 4.查看VPC状态
  • 三、创建DWS集群
    • 1.进入数据仓库服务页面
    • 2.创建数据仓库集群
    • 3.确认DWS集群配置并提交购买
  • 四、下载gsql客户端并连接DWS数据库
    • 1.下载gsql客户端
    • 2.复制gsql客户端软件包
    • 3.查看DWS的公网IP地址
    • 4.打开Xfce终端终端
    • 5.解压客户端,并执行环境变量。
    • 6.连接DWS数据库
    • 7.获取AK和SK值
  • 五、创建TPC-H基表和导入数据
    • 1.创建表1-REGION
    • 2.创建表2-NATION。
    • 3.创建表3- SUPPLIER
    • 4.创建表4- CUSTOMER
    • 5.创建表5- PART
    • 6.创建表6- PARTSUPP
    • 7.创建表7- ORDERS
    • 8.创建表8- LINEITEM
    • 9.查看以上表是否创建成功
  • 六、创建外表
    • 1.外表介绍
    • 2.创建外表1- REGION01
    • 3.创建外表2- NATION01
    • 4.创建外表3- SUPPLIER01
    • 5.创建外表4- CUSTOMER01
    • 6.创建外表5- PART01
    • 7.创建外表6- PARTSUPP01
    • 8.创建外表7- ORDERS01
    • 9.创建外表8- LINEITEM01
    • 10.导入数据
  • 七、性能优化——选择分布列和调整分布列
    • 1.EXPLAIN PERF语法作用
    • 2.查询执行计划
    • 3.查询表orders的分布列
    • 4.进行分布列修改
    • 5.查看新的执行计划
    • 6.其他性能优化
  • 八、查看表中数据
    • 1.查看所有表
    • 2.查看所有数据库
    • 3.查看某个表中内容

一、云数据仓库GaussDB(DWS)介绍

1.GaussDB(DWS)简介

数据仓库服务GaussDB(DWS) 是一种基于华为云基础架构和平台的在线数据处理数据库,提供即开即用、可扩展且完全托管的分析型数据库服务。GaussDB(DWS)是基于华为融合数据仓库GaussDB产品的云原生服务 ,兼容标准ANSI SQL 99和SQL 2003,同时兼容PostgreSQL/Oracle数据库生态,为各行业PB级海量大数据分析提供有竞争力的解决方案。

image.png

2.GaussDB(DWS)使用场景

GaussDB(DWS) 可广泛应用于金融、车联网、政企、电商、能源、电信等多个领域,已连续两年入选Gartner发布的数据管理解决方案魔力象限,相比传统数据仓库,性价比提升数倍,具备大规模扩展能力和企业级可靠性。

3.本次实践目的

  • ① 了解华为云DWS数据仓库集群的基本创建和使用。
  • ② 了解GaussDB(DWS)几种常见的SQL调优手段。
  • ③ 了解华为云DWS数据库集群的连接方法和基本使用。

二、创建虚拟私有云VPC

1.VPC介绍

虚拟私有云(Virtual Private Cloud)是用户在华为云上申请的隔离的、私密的虚拟网络环境。用户可以自由配置VPC内的IP地址段、子网、安全组等子服务,也可以申请弹性带宽和弹性IP搭建业务系统。

2.进入虚拟机私有云界面

登录账号后,点击左侧栏“虚拟私有云”

image.png

image.png

3.创建虚拟私有云VPC

基本信息:
①当前区域:华北-北京四
② 名称:DWS-vpc
③网段:192.168.0.0/16

子网配置:
① 可用分区:可用区1
② 子网名称:subnet-DWS
③ 子网IPv4网段:192.168.0.0/24
④ 子网IPv6网段:默认不勾选

image.png

4.查看VPC状态

检查创建的虚拟机私有云VPC状态。

image.png

三、创建DWS集群

1.进入数据仓库服务页面

点击服务列表->“大数据”->“数据仓库服务GaussDB(DWS)”,进入左侧栏“数据仓库服务”页面。

image.png
image.png

2.创建数据仓库集群

选择创建数据仓库集群
①计费模式:改为“按需计费”
②区域:华北-北京四。
③ 可用区:可用区1。(如资源售罄,可更换可用区)
④ 产品类型:云数仓。
⑤ 计算类型:弹性云服务器
⑥ 存储类型:SSD云盘
⑦ CPU架构:鲲鹏
⑧ 节点规格:dwsx2.xlarge(选择最小规格即可)
⑨ 热数据存储 :100G
⑩ 节点数量:3

image.png

image.png

① 集群名称:my-dws。
② 集群版本:选择8.1.3.x以上版本。
③ 管理员用户:保持默认。
④ 管理员密码:设置密码,需满足界面提示的密码复杂度要求,并记住此密码。
⑤ 数据库端口:保持默认。
⑥ 虚拟私有云:DWS-vpc
⑦ 子网:subnet-DWS
⑧ 安全组:自动创建安全组
⑨ 公网访问:现在购买
⑩ 宽带:1Mbit/s

image.png

3.确认DWS集群配置并提交购买

高级配置选择“默认配置”,单击“立即创建”。核对无误,单击“提交”。【创建DWS需要等待10分钟,此时可以继续操作以下步骤】。

image.png
image.png

四、下载gsql客户端并连接DWS数据库

1.下载gsql客户端

鼠标移动到云桌面浏览器页面中左侧菜单栏,点击服务列表->“大数据”->“数据仓库服务GaussDB(DWS)”,进入左侧栏“数据仓库服务”页面,左侧导航选择“连接管理”,选择gsql命令行客户端的OS版本:Redhat x86_64,单击“下载”。

image.png
image.png

2.复制gsql客户端软件包

打开Xfce终端终端,gsql客户端默认下载目录为/home/user/Downloads/dws_client_8.1.x_redhat_x64.zip,
将/home/user/Downloads/dws_client_8.1.x_redhat_x64.zip拷贝到/home/user/Desktop/目录下

user@sandbox:~$ cp -a /home/user/Downloads/dws_client_8.1.x_redhat_x64.zip /home/user/Desktop/
user@sandbox:~$ ls /home/user/Desktop/
dws_client_8.1.x_redhat_x64.zip  Google Chrome.desktop  xfce4-terminal.desktop
user@sandbox:~$ 

image.png

3.查看DWS的公网IP地址

进入DWS的管理控制台界面,查看DWS集群详细信息,查看并复制公网IP地址。

image.png

4.打开Xfce终端终端

双击“Xfce终端”,进入Terminal命令行窗口,执行以下命令进入/home/user/Desktop/目录。

image.png

5.解压客户端,并执行环境变量。

解压客户端,并执行环境变量。

unzip dws_client_8.1.x_redhat_x64.zip
source gsql_env.sh

image.png

6.连接DWS数据库

通过以下命令连接DWS数据库

  • 示例

gsql -d gaussdb -h <DWS???IP> -U dbadmin -p 8000 -r -W <??dbadmin??>;
  • 本次实践
gsql -h 114.116.235.158 -d gaussdb -U dbadmin -p 8000 -r -W <设置的dbadmin的密码>

image.png

7.获取AK和SK值

  • 切换回浏览器的管理控制台页面,鼠标停留在右上角用户名,单击“我的凭证”

image.png

  • 左侧导航单击“访问密钥”,单击“新增访问密钥”,单击“确定”,单击“立即下载”
    image.png
    image.png

  • 打开Xfce终端,执行以下命令,获取AK和SK.

注:前面为AK,后面为SK

image.png

五、创建TPC-H基表和导入数据

1.创建表1-REGION

在Xfce终端命令行界面,连接DWS,创建表1-REGION。

CREATE TABLE REGION
(   
R_REGIONKEY    INT    NOT NULL,
R_NAME       CHAR(25) NOT NULL, 
R_COMMENT    VARCHAR(152)
)
with (orientation = column)
DISTRIBUTE BY REPLICATION;

image.png

2.创建表2-NATION。

复制以下SQL语句,在Terminal命令行窗口中执行,创建表2-NATION。

CREATE TABLE NATION
(    
N_NATIONKEY  INT NOT NULL, 
N_NAME     CHAR(25) NOT NULL, 
N_REGIONKEY  INT NOT NULL, 
N_COMMENT    VARCHAR(152)
)
with (orientation = column)
DISTRIBUTE BY REPLICATION;

image.png

3.创建表3- SUPPLIER

复制以下SQL语句,在Terminal命令行窗口中执行,创建表3- SUPPLIER。


CREATE TABLE SUPPLIER
(    
S_SUPPKEY     BIGINT NOT NULL    , 
S_NAME        CHAR(25) NOT NULL    , 
S_ADDRESS     VARCHAR(40) NOT NULL    , 
S_NATIONKEY   INT NOT NULL    , 
S_PHONE       CHAR(15) NOT NULL    , 
S_ACCTBAL     DECIMAL(15,2) NOT NULL    , 
S_COMMENT     VARCHAR(101) NOT NULL
)
with (orientation = column)
distribute by hash(S_SUPPKEY)
PARTITION BY RANGE(S_NATIONKEY)
(    
PARTITION S_NATIONKEY_1 VALUES LESS THAN(1),    
PARTITION S_NATIONKEY_2 VALUES LESS THAN(2),    
PARTITION S_NATIONKEY_3 VALUES LESS THAN(3),    
PARTITION S_NATIONKEY_4 VALUES LESS THAN(4),   
PARTITION S_NATIONKEY_5 VALUES LESS THAN(5),    
PARTITION S_NATIONKEY_6 VALUES LESS THAN(6),    
PARTITION S_NATIONKEY_7 VALUES LESS THAN(7),    
PARTITION S_NATIONKEY_8 VALUES LESS THAN(8),    
PARTITION S_NATIONKEY_9 VALUES LESS THAN(9),    
PARTITION S_NATIONKEY_10 VALUES LESS THAN(10),    
PARTITION S_NATIONKEY_11 VALUES LESS THAN(11),    
PARTITION S_NATIONKEY_12 VALUES LESS THAN(12),    
PARTITION S_NATIONKEY_13 VALUES LESS THAN(13),    
PARTITION S_NATIONKEY_14 VALUES LESS THAN(14),    
PARTITION S_NATIONKEY_15 VALUES LESS THAN(15),    
PARTITION S_NATIONKEY_16 VALUES LESS THAN(16),    
PARTITION S_NATIONKEY_17 VALUES LESS THAN(17),    
PARTITION S_NATIONKEY_18 VALUES LESS THAN(18),    
PARTITION S_NATIONKEY_19 VALUES LESS THAN(19),    
PARTITION S_NATIONKEY_20 VALUES LESS THAN(20),    
PARTITION S_NATIONKEY_21 VALUES LESS THAN(21),    
PARTITION S_NATIONKEY_22 VALUES LESS THAN(22),    
PARTITION S_NATIONKEY_23 VALUES LESS THAN(23),    
PARTITION S_NATIONKEY_24 VALUES LESS THAN(24),    
PARTITION S_NATIONKEY_25 VALUES LESS THAN(25)
);

image.png

4.创建表4- CUSTOMER

复制以下SQL语句,在Terminal命令行窗口中执行,创建表4- CUSTOMER。

CREATE TABLE CUSTOMER
(    
C_CUSTKEY     BIGINT NOT NULL    , 
C_NAME        VARCHAR(25) NOT NULL    , 
C_ADDRESS     VARCHAR(40) NOT NULL    , 
C_NATIONKEY   INT NOT NULL    , 
C_PHONE       CHAR(15) NOT NULL    , 
C_ACCTBAL     DECIMAL(15,2)   NOT NULL    , 
C_MKTSEGMENT  CHAR(10) NOT NULL    , 
C_COMMENT     VARCHAR(117) NOT NULL
)
with (orientation = column)
distribute by hash(C_CUSTKEY)
PARTITION BY RANGE(C_NATIONKEY)
(    
PARTITION C_NATIONKEY_1 VALUES LESS THAN(1),    
PARTITION C_NATIONKEY_2 VALUES LESS THAN(2),    
PARTITION C_NATIONKEY_3 VALUES LESS THAN(3),    
PARTITION C_NATIONKEY_4 VALUES LESS THAN(4),    
PARTITION C_NATIONKEY_5 VALUES LESS THAN(5),    
PARTITION C_NATIONKEY_6 VALUES LESS THAN(6),    
PARTITION C_NATIONKEY_7 VALUES LESS THAN(7),    
PARTITION C_NATIONKEY_8 VALUES LESS THAN(8),    
PARTITION C_NATIONKEY_9 VALUES LESS THAN(9),    
PARTITION C_NATIONKEY_10 VALUES LESS THAN(10),    
PARTITION C_NATIONKEY_11 VALUES LESS THAN(11),    
PARTITION C_NATIONKEY_12 VALUES LESS THAN(12),    
PARTITION C_NATIONKEY_13 VALUES LESS THAN(13),    
PARTITION C_NATIONKEY_14 VALUES LESS THAN(14),    
PARTITION C_NATIONKEY_15 VALUES LESS THAN(15),    
PARTITION C_NATIONKEY_16 VALUES LESS THAN(16),    
PARTITION C_NATIONKEY_17 VALUES LESS THAN(17),    
PARTITION C_NATIONKEY_18 VALUES LESS THAN(18),    
PARTITION C_NATIONKEY_19 VALUES LESS THAN(19),    
PARTITION C_NATIONKEY_20 VALUES LESS THAN(20),    
PARTITION C_NATIONKEY_21 VALUES LESS THAN(21),    
PARTITION C_NATIONKEY_22 VALUES LESS THAN(22),    
PARTITION C_NATIONKEY_23 VALUES LESS THAN(23),   
PARTITION C_NATIONKEY_24 VALUES LESS THAN(24),    
PARTITION C_NATIONKEY_25 VALUES LESS THAN(25)
);

image.png

5.创建表5- PART

复制以下SQL语句,在Terminal命令行窗口中执行,创建表5- PART。

CREATE TABLE PART
(    
P_PARTKEY     BIGINT NOT NULL    , 
P_NAME        VARCHAR(55) NOT NULL    , 
P_MFGR        CHAR(25) NOT NULL    , 
P_BRAND       CHAR(10) NOT NULL    , 
P_TYPE        VARCHAR(25) NOT NULL    , 
P_SIZE        BIGINT NOT NULL    , 
P_CONTAINER   CHAR(10) NOT NULL    , 
P_RETAILPRICE DECIMAL(15,2) NOT NULL    , 
P_COMMENT     VARCHAR(23) NOT NULL)
with (orientation = column)
distribute by hash(P_PARTKEY)
PARTITION BY RANGE(P_SIZE)
(    
PARTITION P_SIZE_1 VALUES LESS THAN(11),    
PARTITION P_SIZE_2 VALUES LESS THAN(21),    
PARTITION P_SIZE_3 VALUES LESS THAN(31),    
PARTITION P_SIZE_4 VALUES LESS THAN(41),    
PARTITION P_SIZE_5 VALUES LESS THAN(51)
);

image.png

6.创建表6- PARTSUPP

复制以下SQL语句,在Terminal命令行窗口中执行,创建表6- PARTSUPP。

CREATE TABLE PARTSUPP
(    
PS_PARTKEY     BIGINT NOT NULL    , 
PS_SUPPKEY     BIGINT NOT NULL    , 
PS_AVAILQTY    BIGINT NOT NULL    , 
PS_SUPPLYCOST  DECIMAL(15,2)  NOT NULL    , 
PS_COMMENT     VARCHAR(199) NOT NULL
)
with (orientation = column)
distribute by hash(PS_PARTKEY)
PARTITION BY RANGE(PS_AVAILQTY)
(    
PARTITION PS_AVAILQTY_1 VALUES LESS THAN(1000),    
PARTITION PS_AVAILQTY_2 VALUES LESS THAN(2000),    
PARTITION PS_AVAILQTY_3 VALUES LESS THAN(3000),   
PARTITION PS_AVAILQTY_4 VALUES LESS THAN(4000),    
PARTITION PS_AVAILQTY_5 VALUES LESS THAN(5000),    
PARTITION PS_AVAILQTY_6 VALUES LESS THAN(6000),    
PARTITION PS_AVAILQTY_7 VALUES LESS THAN(7000),    
PARTITION PS_AVAILQTY_8 VALUES LESS THAN(8000),    
PARTITION PS_AVAILQTY_9 VALUES LESS THAN(9000),    
PARTITION PS_AVAILQTY_10 VALUES LESS THAN(10000)
);

image.png

7.创建表7- ORDERS

复制以下SQL语句,在Terminal命令行窗口中执行,创建表7- ORDERS。

CREATE TABLE ORDERS
(    
O_ORDERKEY       BIGINT NOT NULL    , 
O_CUSTKEY        BIGINT NOT NULL    , 
O_ORDERSTATUS    CHAR(1) NOT NULL    , 
O_TOTALPRICE     DECIMAL(15,2) NOT NULL    , 
O_ORDERDATE      DATE NOT NULL    , 
O_ORDERPRIORITY  CHAR(15) NOT NULL    , 
O_CLERK          CHAR(15) NOT NULL    , 
O_SHIPPRIORITY   BIGINT NOT NULL    , 
O_COMMENT        VARCHAR(79) NOT NULL)
with (orientation = column)
distribute by hash(O_ORDERKEY)
PARTITION BY RANGE(O_ORDERDATE)
(    
PARTITION O_ORDERDATE_1 VALUES LESS THAN('1993-01-01 00:00:00'),    
PARTITION O_ORDERDATE_2 VALUES LESS THAN('1994-01-01 00:00:00'),    
PARTITION O_ORDERDATE_3 VALUES LESS THAN('1995-01-01 00:00:00'),    
PARTITION O_ORDERDATE_4 VALUES LESS THAN('1996-01-01 00:00:00'),    
PARTITION O_ORDERDATE_5 VALUES LESS THAN('1997-01-01 00:00:00'),    
PARTITION O_ORDERDATE_6 VALUES LESS THAN('1998-01-01 00:00:00'),    
PARTITION O_ORDERDATE_7 VALUES LESS THAN('1999-01-01 00:00:00')
);

image.png

8.创建表8- LINEITEM

复制以下SQL语句,在Terminal命令行窗口中执行,创建表8- LINEITEM。

CREATE TABLE LINEITEM
(    
L_ORDERKEY    BIGINT NOT NULL    , 
L_PARTKEY     BIGINT NOT NULL    , 
L_SUPPKEY     BIGINT NOT NULL    , 
L_LINENUMBER  BIGINT NOT NULL    , 
L_QUANTITY    DECIMAL(15,2) NOT NULL    , 
L_EXTENDEDPRICE  DECIMAL(15,2) NOT NULL    , 
L_DISCOUNT    DECIMAL(15,2) NOT NULL    , 
L_TAX         DECIMAL(15,2) NOT NULL    , 
L_RETURNFLAG  CHAR(1) NOT NULL    , 
L_LINESTATUS  CHAR(1) NOT NULL    , 
L_SHIPDATE    DATE NOT NULL    , 
L_COMMITDATE  DATE NOT NULL    , 
L_RECEIPTDATE DATE NOT NULL    , 
L_SHIPINSTRUCT CHAR(25) NOT NULL    , 
L_SHIPMODE     CHAR(10) NOT NULL    , 
L_COMMENT      VARCHAR(44) NOT NULL
)
with (orientation = column)
distribute by hash(L_ORDERKEY)
PARTITION BY RANGE(L_SHIPDATE)
(    
PARTITION L_SHIPDATE_1 VALUES LESS THAN('1993-01-01 00:00:00'),    
PARTITION L_SHIPDATE_2 VALUES LESS THAN('1994-01-01 00:00:00'),    
PARTITION L_SHIPDATE_3 VALUES LESS THAN('1995-01-01 00:00:00'),   
PARTITION L_SHIPDATE_4 VALUES LESS THAN('1996-01-01 00:00:00'),    
PARTITION L_SHIPDATE_5 VALUES LESS THAN('1997-01-01 00:00:00'),    
PARTITION L_SHIPDATE_6 VALUES LESS THAN('1998-01-01 00:00:00'),    
PARTITION L_SHIPDATE_7 VALUES LESS THAN('1999-01-01 00:00:00')
);

image.png

9.查看以上表是否创建成功

查看表是否创建成功

\d

image.png

六、创建外表

1.外表介绍

外表(external table)就像普通的表对像一样,可以select等,只是它是只读的,数据库中只保存了表结构的描述,表数据却没有存放在数据库内,而是存放在了文件系统上。当用户想偶尔使用数据库外的结构化数据时,用起外表来就非常方便。本实验使用的是OBS外表,即外表中包含OBS服务的桶信息、用户凭证AK和SK。

2.创建外表1- REGION01

AK和SK值请替换为上述部署获取的值。

CREATE FOREIGN TABLE REGION01
(like region
)                    
SERVER gsmpp_server 
OPTIONS (encoding 'utf8',location 'obs://dws-lab/performance/region.tbl',format 'text',delimiter '|',access_key 'AK值',secret_access_key 'SK值',chunksize '64',IGNORE_EXTRA_DATA 'on'
);

image.png

3.创建外表2- NATION01

复制以下SQL语句,在Terminal命令行窗口中执行,创建外表2- NATION01。
K和SK值请替换为上述部署获取的值。

CREATE FOREIGN TABLE NATION01
(like nation
)                    
SERVER gsmpp_server 
OPTIONS (encoding 'utf8',location 'obs://dws-lab/performance/nation.tbl',format 'text',delimiter '|',access_key 'AK值',secret_access_key 'SK值',chunksize '64',IGNORE_EXTRA_DATA 'on'
);

image.png

4.创建外表3- SUPPLIER01

复制以下SQL语句,在Terminal命令行窗口中执行,创建外表3- SUPPLIER01。

CREATE FOREIGN TABLE SUPPLIER01
(like supplier
)                    
SERVER gsmpp_server 
OPTIONS (encoding 'utf8',location 'obs://dws-lab/performance/supplier.tbl',format 'text',delimiter '|',access_key 'AK值',secret_access_key 'SK值',chunksize '64',IGNORE_EXTRA_DATA 'on'
);

image.png

5.创建外表4- CUSTOMER01

复制以下SQL语句,在Terminal命令行窗口中执行,创建外表4- CUSTOMER01。


CREATE FOREIGN TABLE CUSTOMER01
(like customer
)                    
SERVER gsmpp_server 
OPTIONS (encoding 'utf8',location 'obs://dws-lab/performance/customer.tbl',format 'text',delimiter '|',access_key 'AK值',secret_access_key 'SK值',chunksize '64',IGNORE_EXTRA_DATA 'on'
);

image.png

6.创建外表5- PART01

复制以下SQL语句,在Terminal命令行窗口中执行,创建外表5- PART01。


CREATE FOREIGN TABLE PART01
(like part
)                    
SERVER gsmpp_server 
OPTIONS (encoding 'utf8',location 'obs://dws-lab/performance/part.tbl',format 'text',delimiter '|',access_key 'AK值',secret_access_key 'SK值',chunksize '64',IGNORE_EXTRA_DATA 'on'
);

image.png

7.创建外表6- PARTSUPP01

复制以下SQL语句,在Terminal命令行窗口中执行,创建外表6- PARTSUPP01。

CREATE FOREIGN TABLE PARTSUPP01
(like partsupp
)                    
SERVER gsmpp_server 
OPTIONS (encoding 'utf8',location 'obs://dws-lab/performance/partsupp.tbl',format 'text',delimiter '|',access_key 'AK值',secret_access_key 'SK值',chunksize '64',IGNORE_EXTRA_DATA 'on'
);

image.png

8.创建外表7- ORDERS01

复制以下SQL语句,在Terminal命令行窗口中执行,创建外表7- ORDERS01。

CREATE FOREIGN TABLE ORDERS01
(like orders
)                    
SERVER gsmpp_server 
OPTIONS (encoding 'utf8',location 'obs://dws-lab/performance/orders.tbl',format 'text',delimiter '|',access_key 'AK值',secret_access_key 'SK值',chunksize '64',IGNORE_EXTRA_DATA 'on'
);

image.png

9.创建外表8- LINEITEM01

复制以下SQL语句,在Terminal命令行窗口中执行,创建外表8- LINEITEM01。

CREATE FOREIGN TABLE lineitem01
(like lineitem
)                    
SERVER gsmpp_server 
OPTIONS (encoding 'utf8',location 'obs://dws-lab/performance/lineitem.tbl',format 'text',delimiter '|',access_key 'AK值',secret_access_key 'SK值',chunksize '64',IGNORE_EXTRA_DATA 'on'
);

image.png

10.导入数据

复制以下SQL语句,在Terminal命令行窗口中执行,导入数据,此过程预计5~8分钟,请耐心等待。

insert into region select * from region01;
insert into nation select * from nation01;
insert into supplier select * from supplier01;
insert into customer select * from customer01;
insert into part select * from part01;
insert into partsupp select * from partsupp01;
insert into orders select * from orders01;
insert into lineitem select * from lineitem01;

image.png

七、性能优化——选择分布列和调整分布列

1.EXPLAIN PERF语法作用

执行EXPLAIN PERFORMANCE命令,收集DML语句(SELECT/UPDATE/INSERT/DELETE/MERGE INTO/CREATE TABLE AS)详细的执行信息。在性能调优环节中,使用EXPLAIN PERFORMANCE查看执行计划及实际运行情况,以便更精准地定位问题原因。

2.查询执行计划

复制以下SQL语句,在已连接DWS数据库的Terminal命令行窗口中执行,查询执行计划。显示如下图类似结果,表示执行时间为1356毫秒。

EXPLAIN PERFORMANCE
SELECTcount(distinct c_custkey)
FROM customer 
WHERE c_custkey IN (SELECT DISTINCT o_custkeyFROM orders
);

image.png

3.查询表orders的分布列

执行以下SQL查询表orders的分布列,返回结果为o_orderkey。

SELECT getdistributekey('public.orders');

image.png

4.进行分布列修改

由于以上待定位的SQL查询中,WHERE字句是关联了表orders的o_custkey列,可以考虑把表orders的分布列o_orderkey修改为关联列o_custkey,以达到性能加速的目的。执行以下SQL进行分布列修改。


ALTER TABLE orders DISTRIBUTE BY HASH(o_custkey);

5.查看新的执行计划

再执行以下SQL,查看新的执行计划,发现时间为847毫秒,可见修改分布列为关联列,可以提高性能。

EXPLAIN PERFORMANCE
SELECTcount(distinct c_custkey)
FROM customer 
WHERE c_custkey IN (SELECT DISTINCT o_custkeyFROM orders
);

image.png

6.其他性能优化

可以参考官方文档,建立索引性能优化、Join性能优化等方面进行DWS数据仓库性能优化。

八、查看表中数据

1.查看所有表

查看当前数据库中所有表。

\d

image.png

2.查看所有数据库

查看所有数据库列表

\l

image.png

3.查看某个表中内容

查看某个表中内容

select * from nation;

image.png

这篇关于华为云之数据仓库集群GaussDB(DWS)的基本使用【玩转PB级数仓GaussDB(DWS)】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/177348

相关文章

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

HDFS—集群扩容及缩容

白名单:表示在白名单的主机IP地址可以,用来存储数据。 配置白名单步骤如下: 1)在NameNode节点的/opt/module/hadoop-3.1.4/etc/hadoop目录下分别创建whitelist 和blacklist文件 (1)创建白名单 [lytfly@hadoop102 hadoop]$ vim whitelist 在whitelist中添加如下主机名称,假如集群正常工作的节

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

基本知识点

1、c++的输入加上ios::sync_with_stdio(false);  等价于 c的输入,读取速度会加快(但是在字符串的题里面和容易出现问题) 2、lower_bound()和upper_bound() iterator lower_bound( const key_type &key ): 返回一个迭代器,指向键值>= key的第一个元素。 iterator upper_bou

pdfmake生成pdf的使用

实际项目中有时会有根据填写的表单数据或者其他格式的数据,将数据自动填充到pdf文件中根据固定模板生成pdf文件的需求 文章目录 利用pdfmake生成pdf文件1.下载安装pdfmake第三方包2.封装生成pdf文件的共用配置3.生成pdf文件的文件模板内容4.调用方法生成pdf 利用pdfmake生成pdf文件 1.下载安装pdfmake第三方包 npm i pdfma