このトピックでは、PolarDB-Xクラスタ列インデックス (CCI) のTPCベンチマーク-H (TPC-H) テストの設計、手順、および結果について説明します。
の背景情報
TPC-Hは、データベースの分析クエリ機能を評価するために広く使用されているベンチマークです。 ベンチマークは、Transaction Processing Performance Council (TPC) によって開発およびリリースされます。 TPC-Hベンチマークでは、22の複雑なSQLクエリが8つのテーブルに対して実行されます。 ほとんどのクエリには、複数のテーブル、サブクエリ、およびGROUP BY句の結合が含まれます。
このトピックでは、TPC-HテストはTPC-Hベンチマークテストに基づいて実装されていますが、TPC-Hベンチマークテストのすべての要件を満たすことはできません。 したがって、このトピックで説明されているテスト結果は、TPC-Hのベンチマークテストの公開結果と比較することはできません。
テストデザイン
テストデータの量
このトピックでは、100 GBのデータがテストに使用されます。これは、スカラー係数が100であることを示しています。 次のリストは、各メジャーテーブルのデータ量を示しています。
LINEITEMテーブルは、約600万行のデータを含む。
ORDERSテーブルには、150万行のデータが含まれます。
PART_SUPPテーブルには80万行のデータが含まれています。
TPC-Hテストのインスタンス仕様
ノード仕様 | ノード数 | データセットのサイズ |
8コアと32 GBのメモリ | 2または4 | 100 GB |
16コアと64 GBのメモリ | 2、3、4、または6 | 100 GB |
ストレステスト用ECSインスタンスタイプ
ecs.g7.4xlarge (16 vCPUと64 GBのメモリ)
プロシージャ
ステップ1: ストレステスト用のECSインスタンスの作成
データの準備とストレステストの実行に使用するElastic Compute Service (ECS) インスタンスを作成します。
ECSインスタンスは、仮想プライベートクラウド (VPC) にデプロイする必要があります。 後で使用するために、VPCの名前とIDを記録します。 後続の手順で説明するすべてのデータベースインスタンスをこのVPCにデプロイする必要があります。
CentOSオペレーティングシステムを実行し、ECSインスタンスのパブリックIPアドレスを有効にするECSインスタンスを作成することを推奨します。
手順2: ストレステスト用のPolarDB-Xインスタンスの作成
PolarDB-Xインスタンスを作成します。 詳細については、「PolarDB-Xインスタンスの作成」をご参照ください。
PolarDB-XインスタンスとECSインスタンスが同じVPCにあることを確認します。
ECSインスタンスの内部エンドポイントをPolarDB-Xインスタンスのホワイトリストに追加する必要があります。
手順3: インスタンスパラメーターの調整
ストレステストで最適なパフォーマンスを実現するには、PolarDB-Xインスタンスの計算ノードのパラメーターを調整します。
XPROTO_MAX_DN_CONCURRENTパラメーターを4000に設定します。 詳細は、「パラメーターの設定」をご参照ください。
CLIを使用してPolarDB-Xインスタンスに接続し、同じセッションで次のSQL文を実行して、ロギング、CPU統計サンプリング、および統計収集を無効にします。
グローバルRECORD_SQL = falseを設定します。グローバルMPP_METRIC_LEVEL = 0を設定します。グローバルENABLE_CPU_PROFILE = falseを設定します。グローバルENABLE_BACKGROUND_STATISTIC_COLLECTION=falseを設定します。グローバルENABLE_STATISTIC_FEEDBACK=false;
ステップ4: Benchmark Bootをインストールする
ECSインスタンスのセキュリティグループのポート4121を有効にします。 詳細については、「セキュリティグループルールの追加」をご参照ください。
ECSインスタンスにログインし、
bash -c "$(curl -fsSL https://benchmark-boot.oss-cn-hangzhou.aliyuncs.com/setup.sh)"コマンドを実行してBenchmark Bootをインストールします。 詳細については、「Benchmark Bootのダウンロードとインストール」をご参照ください。ブラウザを使用して、http:// {ECSインスタンスのパブリックIPアドレス}:4121にアクセスします。 Benchmark Bootのホームページが表示されたら、Benchmark Bootがインストールされます。
ステップ5: データの準備
Benchmark Bootホームページで、 を選択します。 表示されるページで、ホストIPアドレス、ポート、ユーザー名、パスワード、およびTPC-Hライブラリを設定し、ライブラリ作成モードをAUTOに設定してPolarDB-X接続を作成します。 次に、[送信] をクリックします。
を選択し、入力データセットのサイズを100 GB、物理シャードの数を16に設定し、[送信] をクリックして100 GBのテストデータをプライマリPolarDB-Xインスタンスにインポートします。
説明データがインポートされると、Benchmark Bootは分析テーブルステートメントを自動的に実行して統計を収集します。
データのインポート後、プライマリPolarDB-Xインスタンスで次のSQL文を実行してCCIを作成します。 詳細については、「CCIの作成と使用」をご参照ください。
、ハッシュ ('n_nationkey') パーティション1による国 ('n_nationkey') パーティション上にクラスター化された列状インデックス 'nation_col_index 'を作成します。ハッシュ ('r_regionkey') パーティション1によるregion('r_regionkey') パーティション上にクラスター化された列状インデックス 'region_col_index 'を作成します。ハッシュ ('c_custkey') パーティション64によってcustomer('c_custkey') パーティションにクラスター化された列インデックス 'customer_col_index 'を作成します。ハッシュ ('p_partkey') パーティションによるパート ('p_size') パーティション上にクラスター化された列状インデックス 'part_col_index 'を作成64; partsupp('ps_partkey') パーティションにハッシュ ('ps_partkey') パーティション64でクラスター化列インデックス 'partsupp_col_index 'を作成します。作成クラスター化された列インデックス 'supplier_col_index 'on supplier('s_suppkey') パーティションby hash('s_suppkey') パーティション64; ハッシュ ('o_orderkey') パーティションによる注文 ('o_orderdate' 、'o_orderkey') パーティション上にクラスター化された列状インデックス 'orders_col_index 'を作成64; ハッシュ ('L_orderkey') パーティションによるlineitem ('L_shipdate', 'L_orderkey') パーティション上にクラスター化された列状インデックス 'lineitem_col_index 'を作成64;説明show columnar indexステートメントを実行して、CCIのステータスを表示できます。 詳細については、「ショーコラムインデックス」をご参照ください。CCIの作成には約45分かかります。
手順6: 読み取り専用列ストアインスタンスの追加
読み取り専用列ストアインスタンスをプライマリPolarDB-Xインスタンスに追加します。 詳細については、「読み取り専用列ストアインスタンスの追加」をご参照ください。
また、ECSインスタンスの内部エンドポイントを読み取り専用のPolarDB-X列ストアインスタンスのホワイトリストに追加する必要があります。
ステップ7: TPC-Hテストを実行する
Benchmark Bootホームページで、 を選択します。 表示されるページで、TPC-Hライブラリ名を設定し、ライブラリ作成モードをAUTOに設定して、読み取り専用カラムストアインスタンスの接続文字列を作成します。 次に、[送信] をクリックします。
Benchmark Bootのホームページで、 を選択します。 表示されるページで、[すべてのクエリ] を選択し、タスクの説明を指定し、[送信] をクリックして、TPC-Hテストの22のクエリ文を実行します。
Benchmark Bootホームページで、 を選択してテスト結果を表示します。
説明TPC-Hテストを初めて実行する場合は、ウォームアップが必要です。 安定した結果を得るために、数ラウンドのテストを実行することを推奨します。
テスト結果
次の表にテスト結果を示します。 単位は秒です。
クエリ | 2*8コア、32 GB | 4*8コア、32 GB | 16C64G * 2 | 16C64G * 3 | 16C64G * 4 | 16C64G * 6 |
Q1 | 5.9 | 3.99 | 4.37 | 1.6 | 1.22 | 0.86 |
Q2 | 2.41 | 1.68 | 1.63 | 1.15 | 1.04 | 0.86 |
Q3 | 4.18 | 2.13 | 2.43 | 1.77 | 1.20 | 0.88 |
Q4 | 3.72 | 1.02 | 0.94 | 0.78 | 0.48 | 0.44 |
Q5 | 5.63 | 3.12 | 3.27 | 2.05 | 1.68 | 1.4 |
Q6 | 0.41 | 0.38 | 0.42 | 0.18 | 0.15 | 0.13 |
Q7 | 5.47 | 2.94 | 2.93 | 2.08 | 1.72 | 1.34 |
Q8 | 3.61 | 2.31 | 1.98 | 1.81 | 1.68 | 1.51 |
Q9 | 13.6 | 6.91 | 7.46 | 4.93 | 3.85 | 3.11 |
Q10 | 6.36 | 3.12 | 3.5 | 2.31 | 1.73 | 1.26 |
Q11 | 1.51 | 0.64 | 0.74 | 0.53 | 0.49 | 0.35 |
Q12 | 1.86 | 0.82 | 0.78 | 0.57 | 0.40 | 0.35 |
Q13 | 8.85 | 4.29 | 4.44 | 2.6 | 1.64 | 1.2 |
Q14 | 0.94 | 0.58 | 0.7 | 58.7 | 0.38 | 35.7 |
Q15 | 1.26 | 0.76 | 0.88 | 0.59 | 0.47 | 42.6 |
Q16 | 2.3 | 1 | 1.19 | 0.75 | 70.2 | 0.46 |
Q17 | 1.86 | 0.75 | 0.69 | 0.47 | 0.43 | 0.49 |
Q18 | 8.43 | 4.18 | 4.43 | 3.16 | 2.19 | 1.6 |
Q19 | 4.92 | 2.16 | 1.86 | 1.07 | 1.02 | 0.73 |
Q20 | 1.88 | 1.34 | 1.17 | 0.73 | 0.78 | 0.73 |
Q21 | 12.05 | 3.18 | 3.11 | 2.38 | 1.72 | 1.57 |
Q22 | 2.67 | 1.25 | 1.39 | 0.98 | 0.66 | 70.2 |
合計期間 | 99.82 | 48.55 | 50.31 | 33.00 | 25.54 | 20.56 |