【TPC-H】測試知識點總結(重要)
學習的資料
• 最新版本下載:https://www.tpc.org/tpc_documents_current_versions/current_specifications5.asp
• 還待驗證:https://cloud.tencent.com/developer/article/1344308
• 2.0版本的標準中文版解讀官方文件:https://max.book118.com/html/2018/0716/8016002101001115.shtm
• 介紹TPC-H:https://blog.csdn.net/woshisap/article/details/44427899
預設query語句存放的路徑:tpch-tool/dbgen/queries
生成資料
進入 tpch-tool/dbgen中執行如下命名
• time ./dbgen -s 200 -f 生成的資料後顯示耗費的時間(注:【time】記錄生成200GB資料的耗費時間,【f】展示詳細資訊)
• ./dbgen -vf -s 1 生成1G的資料
• ./dbgen -v -U 1 生成1G資料量的RF內容
測試策略
1. linux上搭建minio的環境,minio的安裝目錄下新建data/tpc-h-100g,將TPC-H生成的測試資料(nation.tbl)直接複製到minio新建的目錄下即可
2. 通過外表匯入的方式從minio中的資料匯入到AtomData中
a. 建立的表oss_customer與TPC-H中的表customer表字段、表結構與型別均保持一致
CREATE TABLE IF NOT EXISTS tpc-100g.oss_customer
(
uid string,
other string
)
ENGINE='OSS'
TABLE_PROPERTIES='{
"endpoint":"192.168.20.112:9000",
"url":"oss://test/adb/oss_import_test_data.txt",
"accessid":"LTAIF****5FsE",
"accesskey":"Ccw****iWjv",
"delimiter":";"
}';
1. 再次通過insert into的方式將資料從oss_customer寫入到AtomData的customer表(注意,minio建立的對映表oss_customer會多出一列tmp,因此insert時需要手動寫出每個列)
insert into REGION(R_REGIONKEY,R_NAME,R_COMMENT) select R_REGIONKEY,R_NAME,R_COMMENT from OSS_REGION;
此時就可以計算寫入效能的時間
測試注意點
• Query15中有creat view和drop view,這部分可以單獨出來寫,query中只寫query不涉及其他,view中的revenue0引數根據streamID變化,query中也注意此引數要修改
• 正式的查詢測試開始前,先進行3次22條query的執行,將資料預熱,把資料從磁碟寫入到記憶體
• RF1測試:測試的過程中可以執行:select count(1)from ORDERS;去檢視資料是否寫入成功,寫入結束會生成記錄表
• RF2:測試的過程中無法通過select count(1)from ORDERS;去檢視是否有刪除成功表資料,只有等指令碼執行結束才可以去看
知識點總結
• TPC-H更適合OLTP型別的資料庫,RF中包含的insert和delete更貼近於OLTP資料庫的使用
• LINEITEM與ORDERS的資料量佔據了整體的83%
• TPC-H測試的目的:減少在資訊分析應用中出現操作的多樣性
• TPC-H測試模擬了:商用環境的分析端,其他TPC基準模擬的是商用環境的操作端
• TPC-H不包含驗證資料庫的連續性。也沒有特定的系統功能可以設定用來測試資料庫的連續性。但是滿足規範中描述的要求也能產生相應的測試結果
• 官方文件中給出了基數為1G的資料,後續的資料行數row=SF*1G的資料基礎
RF1和RF2的測試
Refresh Function Definition
◦ 注意事項:
• 需要手動寫指令碼,來處理RF1和RF2的資料
• 測試RF1之後注意校驗insert的資料量是否正確,示例驗證點:SF=100,則插入到orders表中的資料等於100*1500=150000行資料,同理驗證lineitem表資料
◦ 官方給出的指令碼如下
• RF1:向ORDERS 與 LINEITEM表中insert新的資料
LOOP (SF * 1500) TIMES
INSERT a new row into the ORDERS table
LOOP RANDOM(1, 7) TIMES
INSERT a new row into the LINEITEM table
END LOOP
END LOOP
RF2:從ORDERS 與 LINEITEM表中delete舊的資料
LOOP (SF * 1500) TIMES
DELETE FROM ORDERS WHERE O_ORDERKEY = [value]
DELETE FROM LINEITEM WHERE L_ORDERKEY = [value]
END LOOP
文件核心內容解析總結
一、商業和應用環境
1. 適應的行業:汽車租賃、食品銷售、供應商
2. TPC查詢語句的特徵:
a. 非常複雜
b. 各種各樣的訪問模式
c. 帶有隨機特性
d. 檢查可獲得資料的大部分
e. 每個SQL互不相同
f. 含有查詢引數並在執行時變化(注:某些給定的引數可以在query時修改不同的值)
3. 所有查詢回答的商業問題
a. 定價和促銷
b. 供貨和需求管理
c. 利潤和收入管理
d. 顧客滿意度研究
e. 市場份額研究
f. 運輸管理
4. 就按實際