聊聊數倉中TPCD-DS&TPC-H與查詢性能的那些事兒


摘要:詳細講述使用GaussDB(DWS)時,如何使用TPC-DS/TPC-H等標准數據模型,獲取DWS的查詢性能數據。

本文分享自華為雲社區《GaussDB(DWS) 《DWS之TPCD-DS&TPC-H與查詢性能的那些事兒》》,作者: 一劍戰八荒 。

1 綜述

本文目標在於,詳細講述使用GaussDB(DWS)時,如何使用TPC-DS/TPC-H等標准數據模型,獲取DWS的查詢性能數據。主要包括,整體流程概述,DWS集群和ECS彈性雲服務器環境准備,TPC-DS/TPC-H造數,建表與數據導入,執行查詢與結果收集四個章節。

受限於編輯器的顯示,為了更好地閱讀效果,煩請下載附件的原版文檔查看,獲取相關腳本。

其中涉及的很多操作細節無法一一展開敘述,以梳理和展示整體的邏輯為主。其中主要涉及的工具OBS/GDS/JDBC copy后續會單獨開篇敘述。若有無法解決的疑問,歡迎評論留言。

2 整體流程概述

3 DWS集群和ECS彈性雲服務器環境准備

3.1 創建ECS彈性雲服務器

3.2 創建DWS數據倉庫

4 TPC-DS/TPC-H造數

4.1 准備數據生成工具

  1. 遠程連接ECS彈性雲
  2. 執行 yum install git,安裝git
  3. 執行 yum install gcc,安裝gcc
  4. 執行 mkdir –p /data1/script/tpcds-kit/tpcds1000X ; mkdir –p /data1/script/tpch-kit/tpch100X 創建tpc-ds或者tpc-h的存放目錄
  5. TPC-DS造數工具dsdgen請從官網獲取最新版本。

通過FTP或者OBS服務上傳到ECS的 /data1/script/tpcds-kit;(OBS使用方法詳見附錄1)

TPC-H造數工具可直接git clone下載。

cd /data1/script/tpch-kit;

git clone https://github.com/gregrahn/tpch-kit.git

  1. 解壓tpch的包,進入dbgen目錄,make 編譯對應的造數工具dbgen
  2. 解壓tpcds的包,進入tools目錄,make 編譯對應的造數工具dsdgen

4.2 生成數據文件

  • 生成TPCH數據文件

進入dbgen目錄后,執行./dbgen –s 100 > ./dbgen_100.log 2>&1 &,下發生成100Xtpch數據的命令到后台執行

可以通過du –sh dbgen/*.tbl,判斷數據文件的生成進度。100Xtpch數據文件總大小約107GB,

也可以通過ps ux|grep dbgen,查看生成數據文件的進程是否退出

  • 生成TPCDS數據文件

因為tpcds1000X的數據,單個標的數據文件較大,我們采取分片生成的策略。

進入tools目錄后,執行

for c in {1..10};do (./dsdgen –sc 1000 –parallel 10 –child ${c} –dir /data1/script/tpcdsk-kit/tpcds1000X  > /dev/null 2>&1 &);done
其中,

-sc 指定數據規模

-parallel 指定分片數

-child 指定當前是生成分片中的第幾片

-dir 指定生成數據文件存放的目錄

可以通過du –sh tpcds100X/*.dat,判斷數據文件的生成進度。1000Xtpcds數據文件總大小約920GB,

也可以通過ps ux|grep dsdgen,查看生成數據文件的進程是否退出。

5 建表與數據導入

5.1 GDS方式導入

5.1.1 從數據倉庫服務的連接管理頁面下載ECS對應版本的gsql客戶端,通過ftp或obs上傳到ECS上;(OBS使用方法詳見附錄1)

5.1.2 在ECS上部署GDS,詳見華為雲官方資料https://support.huaweicloud.com/tg-dws/dws_07_0759.html

5.1.3 在ECS上通過gsql工具連接集群,連接群集群所需的ip和端口號信息,可以從數據倉庫服務的連接管理頁面獲取

5.1.4 在ECS上使用gsql連接集群,創建tpch/tpcds的內表和gds外表。建表語句詳見如下sql文件,

5.1.5 在ECS使用gsql連接集群,通過GDS外表,使用insert into [目標表] select * from [目標表外表]的方式導入數據到集群內。

5.2 JDBC copy方式導入

5.2.1 從數據倉庫服務的連接管理頁面下載ECS對應版本的JDBC驅動,通過ftp或obs上傳到ECS上;(OBS使用方法詳見附錄1)

5.2.2 上傳JDBC驅動和copy的java腳本到ECS,此處提供dws_copy.java源碼

5.2.3 在ECS上javac編譯java文件,然后生成copy編譯后源碼和JDBC驅動的jar包,Copy.jar。編譯和生成jar包詳細流程如下圖,

5.2.4 在ECS上java –jar Copy.jar通過JDBC copy數據到集群內。

可執行源碼和二次封裝的shell JDBC導數執行腳本詳見如下壓縮包

6 執行查詢與結果收集

6.1通過編寫shell腳本自動化執行查詢和結果收集。

腳本壓縮包如下,其中包含query.conf和run_query.sh兩個文件。

query.conf為集群信息配置文件,包含如下四個變量

db_name=tpcds_test 數據庫名稱

db_port=6000 數據庫端口號

db_user=tpcds_user 數據庫用戶

user_passwd=Gauss_234 數據庫用戶密碼

編輯query.conf為集群對應的信息后,執行sh run_query.sh即可開始查詢執行和結果收集。

注意事項:

  1. gsql客戶端的使用需要每次連接后,source gsql_env,執行查詢腳本前請確認gsql可執行;
  2. 每個查詢會跑6次,一次收集執行計划,兩次預熱,三次正式查詢,最終結果取后三次查詢的平均值;
  3. 查詢腳本執行后會立即生成query_log_yymmdd_hhmmss名稱的目錄,其中

exlain_log子目錄存放查詢計划,

pre_warm子目錄存放預熱執行結果,

real_test子目錄存放正式查詢執行結果,

query_result.csv文件,csv格式匯總所有查詢的執行結果,csv中結果實例如下圖

7 附錄

7.1 華為雲OBS官方使用指導

https://support.huaweicloud.com/browsertg-obs/obs_03_1000.html

 

點擊關注,第一時間了解華為雲新鮮技術~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM