大數據“復活”記
1032
2025-03-31
TPC-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彈性云服務器
計費模式
按需計費
區域
華北-北京4
可用區
可用區1
CPU架構
鯤鵬計算
規格
鯤鵬內存優化型 | km1.2xlarge.8 8vCPUs|64 GiB
鏡像
EulerOS 2.8 64bit with ARM(40GB)
數據盤
系統盤通用型SSD 40GB,額外增加一塊 超高IO 1200GB 數據盤
3.2????? 創建DWS數據倉庫
區域
華北-北京四
產品類型
云數倉
CPU架構
鯤鵬
節點規格
Dwsk2.2xlarge | 8 vCPUs | 64GB
每節點可用存儲
100GB
節點數
12
4????? TPC-DS/TPC-H造數
4.1????? 準備數據生成工具
遠程連接ECS彈性云
執行 yum install git,安裝git
執行 yum install gcc,安裝gcc
執行 mkdir –p /data1/script/tpcds-kit/tpcds1000X ; mkdir –p /data1/script/tpch-kit/tpch100X 創建tpc-ds或者tpc-h的存放目錄
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
解壓tpch的包,進入dbgen目錄,make 編譯對應的造數工具dbgen
解壓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導數執行腳本詳見如下壓縮包
注.JDBC copy導入數據,詳見此篇博客https://bbs.huaweicloud.com/blogs/350006。
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即可開始查詢執行和結果收集。
注意事項:
gsql客戶端的使用需要每次連接后,source gsql_env,執行查詢腳本前請確認gsql可執行;
每個查詢會跑6次,一次收集執行計劃,兩次預熱,三次正式查詢,最終結果取后三次查詢的平均值;
查詢腳本執行后會立即生成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
附件: 《GaussDB(DWS) 之TPCD-DS&TPC-H與查詢性能的那些事兒》.docx 2.25MB 下載次數:2次
EI企業智能 Gauss AP 數據倉庫服務 GaussDB(DWS)
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。