TiDB TPC-H パフォーマンス テスト レポート -- v4.0 と v3.0

テストの目的

このテストの目的は、オンライン分析処理 (OLAP) シナリオにおける TiDB 4.0 と TiDB 3.0 の TPC-H パフォーマンスを比較することです。

TiFlashは TiDB v4.0 で導入され、TiDB のハイブリッド トランザクションおよび分析処理 (HTAP) 機能を強化するため、このレポートのテスト オブジェクトは次のとおりです。

  • TiKV からのみデータを読み取る TiDB v3.0。
  • TiKV からのみデータを読み取る TiDB v4.0。
  • TiDB v4.0 は、インテリジェントな選択に基づいて TiKV およびTiFlashからデータを自動的に読み取ります。

テスト環境(AWS EC2)

ハードウェア構成

サービスの種類EC2タイプインスタンス数
PDm5.xlarge3
TiDBc5.4xlarge2
TiKV とTiFlashi3.4xlarge3
TPC-Hm5.xlarge1

ソフトウェアバージョン

サービスの種類ソフトウェアバージョン
PD3.0 と 4.0
TiDB3.0 と 4.0
TiKV3.0 と 4.0
TiFlash4.0
tiup-bench0.2

パラメータ設定

v3.0

v3.0 の場合、TiDB、TiKV、および PD はデフォルトのパラメーター構成を使用します。

変数設定
set global tidb_distsql_scan_concurrency = 30; set global tidb_projection_concurrency = 16; set global tidb_hashagg_partial_concurrency = 16; set global tidb_hashagg_final_concurrency = 16; set global tidb_hash_join_concurrency = 16; set global tidb_index_lookup_concurrency = 16; set global tidb_index_lookup_join_concurrency = 16;

v4.0

v4.0 の場合、TiDB はデフォルトのパラメータ設定を使用します。

TiKV 構成
readpool.storage.use-unified-pool: false readpool.coprocessor.use-unified-pool: true
PD構成
replication.enable-placement-rules: true
TiFlash構成
logger.level: "info" learner_config.log-level: "info"
変数設定

注記:

セッション変数が存在する可能性があります。すべてのクエリは現在のセッションで実行することをお勧めします。

set global tidb_allow_batch_cop = 1; set session tidb_opt_distinct_agg_push_down = 1; set global tidb_distsql_scan_concurrency = 30; set global tidb_projection_concurrency = 16; set global tidb_hashagg_partial_concurrency = 16; set global tidb_hashagg_final_concurrency = 16; set global tidb_hash_join_concurrency = 16; set global tidb_index_lookup_concurrency = 16; set global tidb_index_lookup_join_concurrency = 16;

テスト計画

ハードウェアの前提条件

TiKV とTiFlashによるディスクおよび I/O リソースの競合を回避するには、EC2 上に構成された 2 つの NVMe SSD ディスクを/data1/data2にマウントします。 TiKV を/data1にデプロイ、 TiFlash を/data2にデプロイします。

テストプロセス

  1. TiUPを使用して TiDB v4.0 および v3.0をデプロイ。

  2. TiUPのベンチ ツールを使用して、スケール ファクター 10 の TPC-H データをインポートします。

    • 次のコマンドを実行して、データを v3.0 にインポートします。

      tiup bench tpch prepare \ --host ${tidb_v3_host} --port ${tidb_v3_port} --db tpch_10 \ --sf 10 \ --analyze --tidb_build_stats_concurrency 8 --tidb_distsql_scan_concurrency 30
    • 次のコマンドを実行して、データを v4.0 にインポートします。

      tiup bench tpch prepare \ --host ${tidb_v4_host} --port ${tidb_v4_port} --db tpch_10 --password ${password} \ --sf 10 \ --tiflash \ --analyze --tidb_build_stats_concurrency 8 --tidb_distsql_scan_concurrency 30
  3. TPC-H クエリを実行します。

    1. TPC-H SQL クエリ ファイルをダウンロードします。

      git clone https://github.com/pingcap/tidb-bench.git && cd tpch/queries
    2. TPC-H クエリを実行し、各クエリの実行時間を記録します。

      • TiDB v3.0 の場合、MySQL クライアントを使用して TiDB に接続し、クエリを実行し、各クエリの実行時間を記録します。
      • TiDB v4.0 の場合、MySQL クライアントを使用して TiDB に接続し、データの読み取り元に基づいて次の操作のいずれかを選択します。
        • データが TiKV から読み取り専用である場合は、 set @@session.tidb_isolation_read_engines = 'tikv,tidb';を設定し、クエリを実行し、各クエリの実行時間を記録します。
        • コストベースのインテリジェントな選択に基づいて TiKV およびTiFlashからデータが自動的に読み取られる場合は、 set @@session.tidb_isolation_read_engines = 'tikv,tiflash,tidb';を設定し、クエリを実行し、各クエリの実行時間を記録します。
  4. クエリ実行時間のデータを抽出して整理します。

テスト結果

注記:

このテストで SQL ステートメントが実行されるテーブルには主キーのみがあり、セカンダリ インデックスはありません。したがって、以下のテスト結果は指標の影響を受けません。

クエリIDv3.0v4.0 TiKV のみv4.0 TiKV/ TiFlash自動
17.78秒7.45秒2.09秒
23.15秒1.71秒1.71秒
36.61秒4.10秒4.05秒
42.98秒2.56秒1.87秒
520.35秒5.71秒8.53秒
64.75秒2.44秒0.39秒
77.97秒3.72秒3.59秒
85.89秒3.22秒8.59秒
934.08秒11.87秒15.41秒
104.83秒2.75秒3.35秒
113.98秒1.60秒1.59秒
125.63秒3.40秒1.03秒
135.41秒4.56秒4.02秒
145.19秒3.10秒0.78秒
1510.25秒1.82秒1.26秒
162.46秒1.51秒1.58秒
1723.76秒12.38秒8.52秒
1817.14秒16.38秒16.06秒
195.70秒4.59秒3.20秒
204.98秒1.89秒1.29秒
2111.12秒6.23秒6.26秒
224.49秒3.05秒2.31秒

TPC-H

上のパフォーマンス図では次のようになります。

  • 青い線は v3.0 を表します。
  • 赤い線は v4.0 (TiKV からのみ読み取られるデータ) を表します。
  • 黄色の線は v4.0 (インテリジェントな選択に基づいて TiKV およびTiFlashから自動的に読み取られるデータ) を表します。
  • Y 軸はクエリの実行時間を表します。時間が短いほど、パフォーマンスは向上します。

結果の説明:

  • v4.0 TiKV Only は、 TiDB が TiKV からのみデータを読み取ることを意味します。この結果は、TiDB と TiKV を v4.0 にアップグレードした後、TPC-H のパフォーマンスが向上したことを示しています。
  • v4.0 TiKV/ TiFlash自動的とは、 TiDB オプティマイザーがコスト見積もりに従ってTiFlashレプリカからデータを読み取るかどうかを自動的に決定することを意味します。結果は、v4.0 の完全な HTAP 形式で TPC-H パフォーマンスが向上したことを示しています。

上の図から、22 個のクエリのセットにわたって TPC-H のパフォーマンスが平均して約 100% 向上していることがわかります。

このページは役に立ちましたか?

Playground
新規
登録なしで TiDB の機能をワンストップでインタラクティブに体験できます。
製品
TiDB Cloud
TiDB
価格
PoC お問い合わせ
エコシステム
TiKV
TiFlash
OSS Insight
© 2024 PingCAP. All Rights Reserved.
Privacy Policy.