このトピックでは、TPC ベンチマーク H(TPC-H)を使用してオンライン分析処理(OLAP)クエリの性能をテストする方法について説明します。
TPC-H の概要
次の説明は、TPC-H の公式ドキュメントからの引用です。
TPC-H は意思決定支援ベンチマークです。ビジネス指向のアドホッククエリと同時データ変更のスイートで構成されています。クエリとデータベースにデータを入力するために選択されたデータは、業界全体にわたる幅広い関連性を持つように選択されています。このベンチマークは、大量のデータを調べ、高度に複雑なクエリを実行し、重要なビジネス上の質問に回答する意思決定支援システムを示しています。
詳細については、「TPC BENCHMARK™ H 標準仕様」をご参照ください。
このトピックで説明されている TPC-H 性能テストは、TPC-H ベンチマークテストに基づいて実装されていますが、TPC-H ベンチマークテストのすべての要件を満たしているわけではありません。したがって、テスト結果は、公開されている TPC-H ベンチマークテストの結果と比較することはできません。
データセット
TPC-H は、意思決定支援システムをシミュレートするためにトランザクション処理性能評議会(TPC)によって開発されたテストデータセットです。 TPC-H は、学術界や産業界で意思決定支援システムの性能を評価するために使用されます。
TPC-H は、本番環境のデータをモデル化して、販売システムのデータウェアハウスをシミュレートします。データウェアハウスは 8 つのテーブルで構成されています。各テーブルのサイズは 1 GB から 3 TB の範囲です。 TPC-H ベンチマークテストには 22 のクエリが含まれます。テストは、各クエリの応答時間、つまりクエリを送信してから返された結果を受信するまでに必要な時間に焦点を当てています。テスト結果は、システムのクエリ処理能力を包括的に反映できます。詳細については、「TPC BENCHMARK™ H 標準仕様」をご参照ください。
手順
この例では、TPC-H ベンチマークテストの 22 のクエリが使用されます。テストデータの量はテスト結果に影響します。 TPC-H のデータ生成ツールを使用すると、スケールファクター(SF)を変更して、生成されるデータの量を調整できます。 1 SF は 1 GB のデータを示します。
上記のデータ量は、未加工データの量を指します。テスト環境を準備するときは、インデックスによって占有されるスペースなど、他の要因も考慮する必要があります。
準備を行います。
OLAP クエリのテストに必要な基本環境を準備します。
説明テスト結果に影響を与える可能性のある変数を減らすために、既存のインスタンスの仕様をアップグレードまたはダウングレードするのではなく、テストを実行するたびに新しいインスタンスを使用することをお勧めします。
Elastic Compute Service(ECS)インスタンスを作成します。詳細については、「インスタンスの作成」をご参照ください。
このトピックでは、テストに使用される ECS インスタンスの仕様は次のとおりです。
インスタンスタイプ: ecs.g6e.4xlarge
オペレーティングシステム: CentOS 7.9
データディスク: エンタープライズ SSD(ESSD)。テストで使用されるデータ量に基づいて容量を決定できます。
E-MapReduce(EMR)Serverless StarRocks インスタンスを作成します。詳細については、「インスタンスの作成」をご参照ください。
このテストでは、8 つの計算ユニット(CU)を持つバックエンド(BE)が使用されます。これは、EMR Serverless StarRocks インスタンスが 8 つの CPU コアと 32 GB のメモリで構成されていることを示しています。ビジネス要件に基づいてコンピューティングリソースを構成することもできます。
説明EMR Serverless StarRocks インスタンスと ECS インスタンスを同じ仮想プライベートクラウド(VPC)およびリージョンに作成することをお勧めします。
テストパッケージを構成します。
ECS インスタンスにログオンします。詳細については、「インスタンスへの接続」をご参照ください。
次のコマンドを実行して、StarRocks のベンチマークテストパッケージをダウンロードして解凍します。
// StarRocks 用のベンチマークテストパッケージをダウンロードして解凍します。wget https://emr-olap.oss-cn-beijing.aliyuncs.com/packages/starrocks-benchmark-for-serverless.tar.gz tar xzvf starrocks-benchmark-for-serverless.tar.gz次のコマンドを実行して、starrocks-benchmark-for-serverless ディレクトリに移動します。
// starrocks-benchmark-for-serverless ディレクトリに移動します。cd starrocks-benchmark-for-serverlessvim group_vars/allコマンドを実行し、テストに必要な次のパラメーターを指定します。
// mysql クライアント設定、OSS 設定、ベンチマーク設定を指定します。# mysql client config login_host: fe-c-8764bab92bc6****-internal.starrocks.aliyuncs.com login_port: 9030 login_user: admin login_password: xxxx # oss config bucket: "" endpoint: "" access_key_id: "" access_key_secret: "" # benchmark config scale_factor: 1 work_dir_root: /mnt/disk1/starrocks-benchmark/workdirs dataset_generate_root_path: /mnt/disk1/starrocks-benchmark/datasets次の表に、パラメーターを示します。
パラメーター
説明
備考
login_host
EMR Serverless StarRocks インスタンス上のフロントエンド ( FE ) の内部エンドポイントです。
EMR Serverless StarRocksインスタンスの[インスタンスの詳細] タブに移動して、[FE の詳細] セクションでインスタンスの[内部エンドポイント] を表示できます。
重要パブリックエンドポイントを使用しないことをお勧めします。
クライアントを StarRocks サービスに接続するために使用されるパラメーター。
login_port
EMR Serverless StarRocksインスタンス上のFEのクエリポート。デフォルト値:9030。
EMR Serverless StarRocksインスタンスの[インスタンスの詳細] タブに移動して、[FE の詳細] セクションでインスタンスの[クエリポート] を表示できます。
login_user
EMR Serverless StarRocks インスタンスへのログオンに使用される初期ユーザー名。
login_password
EMR Serverless StarRocks インスタンスへのログオンに使用されるパスワード。
bucket
オブジェクトストレージサービス(OSS)バケットの名前。
オプション。 OSS の構成。これらのパラメーターを指定すると、生成されたテストデータセットは OSS に保存されます。
endpoint
OSS へのアクセスに使用されるエンドポイント。
access_key_id
Alibaba Cloud アカウントの AccessKey ID。
access_key_secret
Alibaba Cloud アカウントの AccessKey シークレット。
scale_factor
テストデータセットの SF。生成されるデータの量を制御します。デフォルト値: 1。単位: GB。
ベンチマークの構成。
work_dir_root
作業ディレクトリのルートディレクトリ。ルートディレクトリは、テーブル作成ステートメントや TPC-H テストのその他の SQL ステートメントなどのデータを保存するために使用されます。デフォルト値: /mnt/disk1/starrocks-benchmark/workdirs。
dataset_generate_root_path
生成されたテストデータセットが保存されるパス。既定値: /mnt/disk1/starrocks-benchmark/datasets です。
OSSバケットが指定されている場合、バケットはこのパスにマウントされます。
次のコマンドを実行して、エンドツーエンドの自動 TPC-H テストを有効にします。
// エンドツーエンドの自動 TPC-H テストを実行します。bin/run_tpch.shエンドツーエンドの自動 TPC-H テスト中に、データベース、テーブル、22 の SQL ステートメント、およびデータセットが作成され、データがロードされ、クエリが実行されます。
次の操作を実行することもできます。
次のコマンドを実行して、データセットをリロードします。
// データセットをリロードします。bin/run_tpch.sh reload次のコマンドを実行して、TPC-H クエリテストを実行します。
// TPC-H クエリテストを実行します。bin/run_tpch.sh query
テスト結果を表示します。
テスト結果の概要を確認します。
bin/run_tpch.shコマンドが実行されると、テスト結果が表示されます。テスト結果の例:TASK [tpc_h : debug] **************************************************************************************************************************************** ok: [10.1.**.**] => { "command_output.stdout_lines": [ "[info] 2022-03-01 09:51:23.295 | Run sql queries started.", // SQL クエリの実行が開始されました。 "[info] 2022-03-01 09:51:23.330 | Run q10.sql started.", // q10.sql の実行が開始されました。 "[info] 2022-03-01 09:51:23.913 | Run q10.sql finished. Time taken: 0:00:00, .557 seconds", // q10.sql の実行が完了しました。所要時間: 0:00:00, .557 秒 ... "[info] 2022-03-01 09:51:33.324 | Run sql queries finished. Time taken: 0:00:10, 10.026 seconds" // SQL クエリの実行が完了しました。所要時間: 0:00:10, 10.026 秒 ] } ...テスト結果の詳細を確認します。
bin/run_tpch.shコマンドが正常に実行されると、システムは TPC-H 性能テスト全体の作業ディレクトリを構築し、<work_dir> ディレクトリのパスを返します。このパスに切り替えて、クエリステートメント、テーブル作成ステートメント、実行ログなどの関連情報を表示できます。
説明この例では、<work_dir> ディレクトリのパスは /mnt/disk1/starrocks-benchmark/workdirs/tpc_h/sf1 です。
cd <work_dir>/logsコマンドを実行して、作業ディレクトリの logs ディレクトリに移動し、テスト結果と SQL ステートメントの詳細な実行結果を表示することもできます。次のコードは、<work_dir> ディレクトリの構造を示しています。
// ディレクトリ構造と各ファイルの説明です。<work_dir>/ ├── config # run.sh および run_mysql.sh スクリプトの構成。 ├── logs # TPC-H 性能テストの最新の実行ログ。 │ ├── *.sql.err │ ├── *.sql.out │ └── run.log ├── queries # TPC-H 性能テストに含まれる 22 の SQL クエリ。 │ ├── ddl │ │ └── create_tables.sql # TPC-H 性能テストのテーブルを作成するために使用されるステートメント。 │ └── *.sql ├── run_mysql.sh ├── run.sh # TPC-H 性能テストで完全に実行されるクエリ。 └── tpch_tools # dbgen ツールキット。