首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL TPC-H 測試工具完整實操手冊:從編譯到自動化基準測試

     編輯:MySQL 綜合教學

MySQL TPC-H 測試工具完整實操手冊:從編譯到自動化基準測試

TPC-H 是 TPC 組織提供的決策支援系統(DSS)基準測試套件,包含 22 個商業導向的 Ad-hoc 查詢與並發資料修改,專門評估資料庫、平台與 I/O 在 OLAP 場景下的查詢能力。官網:https://www.tpc.org/tpch,原始碼下載:tpch_2_14_3.tgz 或 .zip。

1. 編譯安裝關鍵步驟

cp makefile.suite makefile
# 修改 makefile
CC = gcc
DATABASE = MYSQL
MACHINE = LINUX
WORKLOAD = TPCH

修改 tpcd.h 新增 MySQL 專用巨集定義:

#ifdef MYSQL
#define GEN_QUERY_PLAN ""
#define START_TRAN "START TRANSACTION"
#define END_TRAN "COMMIT"
#define SET_OUTPUT ""
#define SET_ROWCOUNT "limit %d;\n"
#define SET_DBASE "use %s;\n"
#endif

執行 make 產生 dbgen(資料生成)與 qgen(SQL 生成)兩個執行檔。

2. 生成測試資料

./dbgen -s 50   # -s 指定倉庫規模,建議 ≥100,生產環境常用 1000

產生 8 張 .tbl 資料檔(如 lineitem.tbl 1.4G 等)。

3. 修正初始化腳本與查詢 SQL

  • dss.ddl:補上 drop/create/use tpch;
  • dss.ri:修正 CONNECT TO TPCD → use tpch;,註釋符 -- 後加空格,外鍵引用補全欄位名(如 references TPCD.REGION(R_REGIONKEY)),最後將表名改為小寫。
  • qgen 產出的 SQL 需做全域取代:;\nlimit → limit、limit -1 → limit 1、移除 interval '106' day (3) 尾部 (3)、修正 count(o_orderkey) → count(o_orderkey) as c_count、drop view revenue0 limit 1 → drop view revenue0; 等,並拆分為 23 個獨立 tpch_01.sql ~ tpch_23.sql。

4. 匯入資料與執行測試

匯入前建議關閉 Binlog 或切分檔案,避免 max_binlog_cache_size 錯誤:

mysql -e "LOAD DATA INFILE 'path/dbgen/lineitem.tbl' INTO TABLE lineitem FIELDS TERMINATED BY '|';"
# 其餘 7 張表同理

自動化測試腳本範例(每次查詢前重啟 MySQL 確保 Buffer Pool 冷啟動):

#!/bin/sh
export PATH=$PATH:/usr/local/bin
. ~/.bash_profile >/dev/null 2>&1
exec 3>&1 4>&2 1>>tpch-benchmark-olap-`date +'%Y%m%d%H%M%S'`.log 2>&1
for I in 1 2 3; do
  for N in $(seq -w 1 22); do
    echo "query $N starting"
    /etc/init.d/mysql restart
    time mysql -f tpch < ./queries/tpch_${N}.sql
    echo "query $N ended!"
  done
done

附件提供完整初始化與自動化測試腳本壓縮包。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved