TiDB TPC-H パフォーマンス テスト レポート -- TiDB v5.4 MPP モード vs. Greenplum 6.15.0 および Apache Spark 3.1.1
テストの概要
このテストは、MPP モードでの TiDB v5.4 の TPC-H 100 GB パフォーマンスを、2 つの主流分析エンジンである Greenplum および Apache Spark の最新バージョンでのパフォーマンスと比較することを目的としています。テスト結果は、MPP モードでの TiDB v5.4 のパフォーマンスが、TPC-H ワークロード下の他の 2 つのソリューションよりも 2 倍から 3 倍高速であることを示しています。
v5.0 では、TiDB はティフラッシュの MPP モードを導入し、TiDB の Hybrid Transactional and Analytical Processing (HTAP) 機能を大幅に強化します。このレポートのテスト オブジェクトは次のとおりです。
- MPP モードの TiDB v5.4 カラムナ ストレージ
- グリーンプラム 6.15.0
- Apache Spark 3.1.1 + 寄木細工
テスト環境
ハードウェア前提条件
インスタンスタイプ | インスタンス数 |
---|---|
PD | 1 |
TiDB | 1 |
TiKV | 3 |
ティフラッシュ | 3 |
- CPU: Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz、40 コア
- メモリー:189GB
- ディスク: NVMe 3TB * 2
ソフトウェアバージョン
サービスの種類 | ソフトウェアバージョン |
---|---|
TiDB | 5.4 |
グリーンプラム | 6.15.0 |
アパッチスパーク | 3.1.1 |
パラメータ構成
TiDB v5.4
v5.4 クラスターの場合、TiDB は、次の構成項目を除いて、既定のパラメーター構成を使用します。
TiFlash の構成ファイルusers.toml
で、次のようにmax_memory_usage
を構成します。
[profiles.default]
max_memory_usage = 10000000000000
次の SQL ステートメントを使用してセッション変数を設定します。
set @@tidb_isolation_read_engines='tiflash';
set @@tidb_allow_mpp=1;
set @@tidb_mem_quota_query = 10 << 30;
すべての TPC-H テスト テーブルは、列形式で TiFlash にレプリケートされ、追加のパーティションやインデックスはありません。
グリーンプラム
最初の 3 つのノードを除いて、Greenplum クラスターは追加のマスター ノードを使用してデプロイされます。各セグメントサーバーには 8 つのセグメントが含まれています。これは、NVMe SSD ごとに 4 つのセグメントを意味します。したがって、全部で 24 のセグメントがあります。ストレージ形式は追加専用/列指向のストレージであり、パーティション キーは主キーとして使用されます。
log_statement = all
gp_autostats_mode = none
statement_mem = 2048MB
gp_vmem_protect_limit = 16384
アパッチスパーク
Apache Spark のテストでは、ストレージ形式として Apache Parquet を使用し、データを HDFS に保存します。 HDFS システムは 3 つのノードで構成されています。各ノードには、データ ディスクとして 2 つの NVMe SSD ディスクが割り当てられています。 Spark クラスターはスタンドアロン モードでデプロイされ、NVMe SSD ディスクをspark.local.dir
のローカル ディレクトリとして使用して、シャッフル スピルを高速化します。追加のパーティションやインデックスは必要ありません。
--driver-memory 20G
--total-executor-cores 120
--executor-cores 5
--executor-memory 15G
テスト結果
ノート:
以下のテスト結果は、3 回のテストの平均データです。すべての数値は秒単位です。
クエリ ID | TiDB v5.4 | グリーンプラム 6.15.0 | Apache Spark 3.1.1 + 寄木細工 |
---|---|---|---|
1 | 8.08 | 64.1307 | 52.64 |
2 | 2.53 | 4.76612 | 11.83 |
3 | 4.84 | 15.62898 | 13.39 |
4 | 10.94 | 12.88318 | 8.54 |
5 | 12.27 | 23.35449 | 25.23 |
6 | 1.32 | 6.033 | 2.21 |
7 | 5.91 | 12.31266 | 25.45 |
8 | 6.71 | 11.82444 | 23.12 |
9 | 44.19 | 22.40144 | 35.2 |
10 | 7.13 | 12.51071 | 12.18 |
11 | 2.18 | 2.6221 | 10.99 |
12 | 2.88 | 7.97906 | 6.99 |
13 | 6.84 | 10.15873 | 12.26 |
14 | 1.69 | 4.79394 | 3.89 |
15 | 3.29 | 10.48785 | 9.82 |
16 | 5.04 | 4.64262 | 6.76 |
17 | 11.7 | 74.65243 | 44.65 |
18 | 12.87 | 64.87646 | 30.27 |
19 | 4.75 | 8.08625 | 4.7 |
20 | 8.89 | 15.47016 | 8.4 |
21 | 24.44 | 39.08594 | 34.83 |
22 | 1.23 | 7.67476 | 4.59 |
上記のパフォーマンス ダイアグラムでは、次のようになります。
- 青い線は TiDB v5.4 を表します。
- 赤い線は Greenplum 6.15.0 を表します。
- 黄色の線は Apache Spark 3.1.1 を表します。
- Y 軸はクエリの実行時間を表します。時間が短いほど、パフォーマンスが向上します。