TPC-H ベンチマーク
TPC-H は、トランザクション処理性能評議会 (TPC) によって開発された意思決定支援ベンチマークです。ビジネス指向のアドホッククエリと同時データ修正のスイートで構成されています。TPC-H は、実際の生産環境に基づいたモデルを構築し、販売システムのデータウェアハウスをシミュレートするために使用できます。このテストでは、データサイズが 1 GB から 3 TB の 8 つのテーブルを使用します。合計 22 のクエリがテストされ、主な性能指標は各クエリの応答時間であり、クエリが送信されてから結果が返されるまでの時間です。
1. テスト結論
TPC-H 100G スケールデータセットで合計 22 のクエリを使用して比較テストを実施しました。結果は以下の通りです。

StarRocks はローカルストレージと Hive テーブルクエリの 2 つの方法をテストしました。StarRocks Hive テーブルと Trino は同じデータをクエリします。データは ORC 形式で保存され、zlib 形式で圧縮されています。
StarRocks がネイティブストレージからデータをクエリするレイテンシーは 21 秒、StarRocks が Hive 外部テーブルをクエリするレイテンシーは 92 秒、Trino が Hive 外部テーブルをクエリするレイテンシーは 187 秒でした。
2. テスト準備
2.1 ハードウェア環境
| マシン | 4 クラウドホスト |
|---|---|
| CPU | 16core Intel(R) Xeon(R) Platinum 8269CY CPU @ 2.50GHz |
| メモリ | 64 GB |
| ネットワーク帯域幅 | 5 Gbits/s |
| ディスク | ESSD クラウドディスク |
2.2 ソフトウェア環境
StarRocks と Trino は同じ構成のマシンにデプロイされています。StarRocks には 1 FE と 3 BEs がデプロイされています。Trino には 1 コーディネーターと 3 ワーカーがデプロイされています。
-
カーネルバージョン: Linux 3.10.0-1127.13.1.el7.x86_64
-
オペレーティングシステムバージョン: CentOS Linux release 7.8.2003
-
ソフトウェアバージョン: StarRocks Community Edition 3.0, Trino-419, Hive-2.3.9
3 テストデータと結果
3.1 テストデータ
| テーブル | 行数 |
|---|---|
| customer | 1500 万 |
| lineitem | 6 億 |
| nation | 25 |
| orders | 1 億 5000 万 |
| part | 2000 万 |
| partsupp | 8000 万 |
| region | 5 |
| supplier | 100 万 |
3.2 テスト結果
クエリ結果の単位は ms です。低い方が良いです。 すべてのクエリは 1 回ウォームアップされ、その後 3 回実行して平均値を結果として取ります。
| クエリ | StarRocks-native-3.0 | StarRocks-3.0-Hive external | Trino-419 |
|---|---|---|---|
| Q1 | 1540 | 5660 | 8811 |
| Q2 | 100 | 1593 | 3009 |
| Q3 | 700 | 5286 | 7891 |
| Q4 | 423 | 2110 | 5760 |
| Q5 | 1180 | 4453 | 9181 |
| Q6 | 56 | 2806 | 4029 |
| Q7 | 903 | 4910 | 7158 |
| Q8 | 546 | 4766 | 8014 |
| Q9 | 2553 | 8010 | 18460 |
| Q10 | 776 | 8190 | 9997 |
| Q11 | 206 | 920 | 2088 |
| Q12 | 166 | 2916 | 4852 |
| Q13 | 1663 | 3420 | 7203 |
| Q14 | 146 | 3286 | 4995 |
| Q15 | 123 | 4173 | 9688 |
| Q16 | 353 | 1126 | 2545 |
| Q17 | 296 | 3426 | 18970 |
| Q18 | 2713 | 7960 | 21763 |
| Q19 | 246 | 4406 | 6586 |
| Q20 | 176 | 3280 | 6632 |
| Q21 | 1410 | 7933 | 16873 |
| Q22 | 350 | 1190 | 2788 |
| 合計 | 16625 | 91820 | 187293 |
4. テストプロセス
4.1 StarRocks ネイティブテーブルのクエリ
4.1.1 データ生成
tpch-poc ツールパッケージをダウンロードして、TPC-H 標準テストセット scale factor=100 のデータを生成します。
wget https://starrocks-public.oss-cn-zhangjiakou.aliyuncs.com/tpch-poc-1.0.zip
unzip tpch-poc-1.0
cd tpch-poc-1.0
sh bin/gen_data/gen-tpch.sh 100 data_100
4.1.2 テーブル構造の作成
設定ファイル conf/starrocks.conf を修正し、クラスタのアドレス (ホストとポート) を指定してから、テーブル作成操作を行います。
sh bin/create_db_table.sh ddl_100
4.1.3 データのインポート
sh bin/stream_load.sh data_100
4.1.4 データのクエリ
sh bin/benchmark.sh
4.2 StarRocks での Hive 外部テーブルの クエリ
4.2.1 テーブル構造の作成
Hive に外部テーブルを作成します。外部テーブルのストレージ形式は ORC で、圧縮形式は zlib です。詳細なテーブル作成文は 5.3 を参照してください。この Hive 外部テーブルは、StarRocks と Trino の両方のクエリに使用されます。
http://localhost:3000/docs/benchmarking/TPC-H_Benchmarking/
4.2.2 データのインポート
ステップ 4.1.1 で生成された TPC-H CSV オリジナルデータを HDFS の指定パス (この記事では /user/tmp/csv/ を使用) にアップロードし、Hive に外部テーブルを作成します。詳細なテーブル作成文は 5.4 を参照してください。この Hive 外部テーブルのストレージ形式は CSV で、ストレージパスは /user/tmp/csv/ です。CSV オリジナルデータがアップロードされるパスです。
CSV 形式の外部テーブルのデータを ORC 形式の外部テーブルに INSERT INTO を使用してインポートし、データを ORC のストレージ形式と zlib の圧縮形式で取得します。インポートコマンドは以下の通りです。
use tpch_hive_csv;
insert into tpch_hive_orc.customer select * from customer;
insert into tpch_hive_orc.lineitem select * from lineitem;
insert into tpch_hive_orc.nation select * from nation;
insert into tpch_hive_orc.orders select * from orders;
insert into tpch_hive_orc.part select * from part;
insert into tpch_hive_orc.partsupp select * from partsupp;
insert into tpch_hive_orc.region select * from region;
insert into tpch_hive_orc.supplier select * from supplier;
4.2.3 データのクエリ
StarRocks は Catalog 機能を使用して Hive テーブルデータをクエリします。詳細な操作は Hive catalog を参照してください。