このトピックでは、TPC Benchmark DS(TPC-DS)を使用してオンライン分析処理(OLAP)クエリの性能をテストする方法について説明します。
TPC-DS の概要
TPC-DS は、データ管理システムの測定ベンチマークを定義する最も有名な組織である Transaction Processing Performance Council(TPC)によって策定された標準ベンチマークです。このベンチマークの測定結果は TPC によっても公開されています。
このテストでは、TPC-DS ベンチマークテストに従って、24 個のテーブルに対して合計 99 個の複雑な SQL クエリがテストされます。テストは、各クエリの応答時間、つまりクエリを送信してから結果が返されるまでに必要な時間に焦点を当てています。
この例のテストは TPC-DS ベンチマークに基づいて実行されますが、TPC-DS ベンチマークテストのすべての要件を満たしているわけではありません。そのため、この例のテスト結果は、公開されている TPC-DS ベンチマークテストの結果と一致しない場合があります。
準備
OLAP クエリのテストに必要な基本環境と TPC-DS データを準備します。
テスト結果に影響を与える可能性のある変数を減らすために、既存のインスタンスの仕様をアップグレードまたはダウングレードするのではなく、テストを実行するたびに新しいインスタンスを使用することをお勧めします。
手順 | 説明 |
| Alibaba Cloud 管理コンソールにログインし、ECS インスタンスを作成します。ECS インスタンスは、データの生成、StarRocks へのデータのインポート、およびクライアントのテストに使用されます。次の要件を満たす ECS インスタンスを作成することをお勧めします。
詳細については、「インスタンスの作成」をご参照ください。 |
| このテストでは、8 個のコンピュートユニット(CU)を持つバックエンド(BE)が使用されます。これは、EMR Serverless StarRocks インスタンスが 8 個の CPU コアと 32 GB のメモリで構成されていることを示します。ビジネス要件に基づいてコンピューティングリソースを構成することもできます。 EMRコンソール にログオンします。左側のナビゲーションペインで、EMR Serverless > StarRocks を選択します。[インスタンス] タブで、[インスタンスの作成] をクリックします。 詳細については、「インスタンスの作成」をご参照ください。 |
| 手順 1 で作成した ECS インスタンスにログインし、ECS インスタンスで次のコマンドを実行してベンチマークテストパッケージをダウンロードします。
|
手順
手順 1: テストパッケージを構成する
作成した ECS インスタンスにログインします。詳細については、「インスタンスへの接続」をご参照ください。
次のコマンドを実行して、テストパッケージが保存されているディレクトリに移動します。
cd tpcds-poc-1.0
vim conf/starrocks.conf
コマンドを実行し、ビジネス要件に基づいて次のパラメーターを変更します。# for mysql cmd // mysql コマンドの場合 mysql_host: fe-c-***-internal.starrocks.aliyuncs.com mysql_port: 9030 mysql_user: admin mysql_password: **** database: tpcds # cluster ports // クラスタポート http_port: 8030 be_heartbeat_port: 9050 broker_port: 8000 # benchmark config // ベンチマーク設定 scale_factor: 3 dataset_generate_path: /mnt/disk1/starrocks-tpcds-benchmark/datasets
次の表にパラメーターを示します。
パラメーター
説明
mysql_host
EMR Serverless StarRocks インスタンス上のフロントエンド(FE)の内部エンドポイント。
EMR Serverless StarRocks インスタンスの [インスタンスの詳細] タブに移動して、[FE の詳細] セクションでインスタンスの [内部エンドポイント] を表示できます。
重要パブリックエンドポイントを使用しないことをお勧めします。
mysql_port
EMR Serverless StarRocks インスタンス上の FE のクエリポート。デフォルト値: 9030。
EMR Serverless StarRocks インスタンスの [インスタンスの詳細] タブに移動して、[FE の詳細] セクションでインスタンスの [クエリポート] を表示できます。
mysql_user
EMR Serverless StarRocks インスタンスにログインするために使用するユーザー名。デフォルト値: admin。
mysql_password
EMR Serverless StarRocks インスタンスにログインするために使用するパスワード。
database
EMR Serverless StarRocks インスタンス用に作成されたデータベースの名前。デフォルト値を使用します。
http_port
EMR Serverless StarRocks インスタンス上の FE の HTTP ポート。デフォルト値: 8030。
[インスタンスの詳細] タブに移動して、[FE の詳細] セクションでインスタンスの [HTTP ポート] を表示できます。
scale_factor
テストデータセットのスケールファクター(SF)。生成されるデータ量を制御します。デフォルト値: 3。単位: GB。
重要EMR Serverless StarRocks インスタンスを作成するときは、ディスクの容量が生成されるテストデータセットのサイズよりも大きいことを確認してください。
dataset_generate_root_path
生成されたテストデータセットが保存されるパス。デフォルト値: /mnt/disk1/starrocks-benchmark/datasets。
手順 2: テストを実行する
次のコマンドを実行して、自動 TPC-DS テストを有効にします。自動 TPC-DS テスト中に、データベース、テーブル、およびデータセットが作成され、データがロードされ、クエリが実行されます。
cd bin
sh run_tpcds.sh
ビジネス要件に基づいて、次の操作を実行することもできます。
クエリを実行するには、次のコマンドを実行します。
sh run_tpcds.sh query
テストデータを再生成するには、次のコマンドを実行します。
sh run_tpcds.sh gen_data
gen_data
ディレクトリが生成され、テストデータを再度インポートする必要がある場合は、次のコマンドを実行してディレクトリを更新します。sh run_tpcds.sh reload
手順 3: テスト結果を表示する
テスト結果は、クエリの実行後に直接返されます。SQL クエリは tpcds3 という名前のデータベースで実行されます。次の結果は、99 個のクエリの応答時間を示しています。
Database from which data is queried: tpcds3 // データが照会されるデータベース: tpcds3
SQL Time(ms) // 時間 (ミリ秒)
Query01 34
Query02 36
Query03 26
Query04 57
Query05 40
Query06 29
Query07 35
Query08 33
Query09 31
Query10 33
Query11 45
Query12 26
Query13 31
Query14 91
Query15 29
Query16 50
Query17 36
Query18 33
Query19 31
Query20 32
Query21 32
Query22 33
Query23 67
Query24 39
Query25 32
Query26 36
Query27 32
Query28 32
Query29 33
Query30 37
Query31 46
Query32 32
Query33 52
Query34 33
Query35 35
Query36 30
Query37 31
Query38 37
Query39 33
Query40 36
Query41 34
Query42 25
Query43 31
Query44 30
Query45 27
Query46 33
Query47 50
Query48 36
Query49 49
Query50 38
Query51 30
Query52 26
Query53 32
Query54 32
Query55 27
Query56 49
Query57 41
Query58 37
Query59 37
Query60 48
Query61 32
Query62 42
Query63 34
Query64 130
Query65 29
Query66 87
Query67 31
Query68 33
Query69 40
Query70 34
Query71 29
Query72 32
Query73 28
Query74 40
Query75 48
Query76 28
Query77 40
Query78 36
Query79 29
Query80 120
Query81 36
Query82 28
Query83 39
Query84 26
Query85 37
Query86 28
Query87 32
Query88 46
Query89 32
Query90 28
Query91 32
Query92 35
Query93 29
Query94 65
Query95 57
Query96 27
Query97 29
Query98 25
Query99 38
All time(ms): 3799 // 合計時間 (ミリ秒): 3799