Star Schema Benchmark (SSB) は、データウェアハウスにおける OLAP クエリのパフォーマンスを評価するための業界標準ツールです。このトピックでは、EMR Serverless StarRocks で SSB パフォーマンステストを実行する手順を説明します。
このトピックにおける SSB の実装は、SSB ベンチマークに基づいています。この結果は、公開されている SSB ベンチマークの結果とは比較できません。
リファレンス結果
以下の結果は、8 CU のインスタンス (8 コア、32 GB メモリ) で測定されたものです。各値はミリ秒単位のクエリ応答時間です。値が小さいほど、パフォーマンスが高いことを示します。
テスト環境
| コンポーネント | 仕様 |
|---|---|
| コンピューティングユニット (CU) | 8 CU (8 コア、32 GB メモリ) |
| スケールファクター | 1 (1 GB の生データ) |
SSB ワイドテーブルクエリ (ssb-flat モード)
| クエリ | 時間 (ms) |
|---|---|
| Q1.1 | 26 |
| Q1.2 | 13 |
| Q1.3 | 20 |
| Q2.1 | 46 |
| Q2.2 | 40 |
| Q2.3 | 26 |
| Q3.1 | 40 |
| Q3.2 | 33 |
| Q3.3 | 30 |
| Q3.4 | 23 |
| Q4.1 | 26 |
| Q4.2 | 30 |
| Q4.3 | 20 |
| 合計 | 373 |
SSB 標準テーブルクエリ (ssb モード)
| クエリ | 時間 (ms) |
|---|---|
| Q1.1 | 26 |
| Q1.2 | 20 |
| Q1.3 | 23 |
| Q2.1 | 103 |
| Q2.2 | 53 |
| Q2.3 | 50 |
| Q3.1 | 86 |
| Q3.2 | 46 |
| Q3.3 | 46 |
| Q3.4 | 36 |
| Q4.1 | 83 |
| Q4.2 | 63 |
| Q4.3 | 53 |
| 合計 | 688 |
SSB の概要
SSB は、Date、Customer、Supplier、Part、Lineorder という 5 つのテーブルで構成される、典型的なスタースキーマのデータモデルをシミュレートします。データウェアハウスや OLAP システムの以下のパフォーマンスメトリクスを評価します:
-
クエリ応答時間
-
並行処理
-
データロード
-
クエリの最適化
SSB は、JOIN オーバーヘッドを削減するためにスタースキーマをワイドテーブルにフラット化するなど、データモデルのカスタマイズもサポートしています。
SSB 生成ツールは、スケールファクター (SF) を使用してデータ量を制御します。1 SF = 1 GB の生データです。インデックスストレージは含まれないため、環境をセットアップする際は、追加のディスク容量を確保してください。
前提条件
開始する前に、以下が準備できていることを確認してください:
-
データを生成し、StarRocks にロードし、クライアントクエリを実行するための Elastic Compute Service (ECS) インスタンス
-
EMR Serverless StarRocks インスタンス
ECS インスタンスの要件
| 要件 | 詳細 |
|---|---|
| オペレーティングシステム | CentOS または Alibaba Cloud Linux |
| データディスク | Enhanced SSD (ESSD)。容量は対象のデータ量に基づきます。 |
| ネットワーク | StarRocks インスタンスと同じリージョンおよび Virtual Private Cloud (VPC) |
| パブリック IP | 必須 |
ECS インスタンスの作成方法については、「インスタンスの作成」をご参照ください。
StarRocks インスタンスの要件
このトピックのリファレンス結果では、8 CU (8 コア、32 GB メモリ) を使用しました。テストの要件に合わせてコンピューティングリソースを調整してください。
StarRocks インスタンスを作成するには、E-MapReduce コンソールに移動し、[EMR Serverless StarRocks] に移動して [Create Instance] をクリックします。詳細な手順については、「インスタンスの作成」をご参照ください。
各テスト実行には、新しく作成したインスタンスを使用してください。アップグレードまたはダウングレードされたインスタンスでは、一貫した結果が得られない可能性があります。
SSB パフォーマンステストの実行
ステップ 1: テストツールキットのダウンロードと設定
-
ECS インスタンスにログオンします。詳細については、「ECSインスタンスへの接続」をご参照ください。
-
テストツールキットをダウンロードして展開します。
sudo wget https://starrocks-oss.oss-cn-beijing.aliyuncs.com/public-access/starrocks-ssb-benchmark-for-serverless.tar.gz tar xzvf starrocks-ssb-benchmark-for-serverless.tar.gz -
ツールキットのディレクトリに移動します。
cd starrocks-ssb-benchmark-for-serverless -
設定ファイルを開きます。
vim conf/starrocks.conf -
ご使用の環境に合わせてパラメーターを更新します。
# mysqlコマンド用 mysql_host: fe-c-7b6f92276******-internal.starrocks.aliyuncs.com mysql_port: 9030 mysql_user: admin mysql_password: 1**** database: ssb_sf # クラスターポート http_port: 8030 # ビットマップインデックスを有効にするかどうかを指定します。 bitmap_index: false # ベンチマーク設定 scale_factor: 1 dataset_generate_root_path: /mnt/disk1/starrocks-benchmark/datasetsパラメーター 説明 デフォルト mysql_hostフロントエンド (FE) の内部エンドポイント。 Instance Details タブの ゲートウェイ情報 > Internal endpoint で確認できます。 — mysql_portFE のクエリポート。 Instance Details タブの [FE Details] > Query Port で確認できます。 9030mysql_userStarRocks インスタンスのユーザー。 adminmysql_passwordStarRocks インスタンスのユーザーのパスワード。 — databaseStarRocks インスタンスに作成するデータベース名。 ssb_sfscale_factorGB 単位のデータ量。 1 = 1 GB の生データ。生成されるデータセットを格納するのに十分なディスク容量があることを確認してください。 1dataset_generate_root_path生成されるテストデータセットが格納されるローカルパス。 /mnt/disk1/starrocks-benchmark/datasetsbitmap_indexビットマップインデックス機能を有効にするかどうか。有効にすると、特定のパターン、特に Q2.2、Q2.3、Q3.3 のクエリパフォーマンスが向上します。 falsehttp_portFE の HTTP ポート。 Instance Details タブの [FE Details] > HTTP Port で確認できます。 8030重要mysql_hostは、パブリックエンドポイントではなく、内部エンドポイントに設定してください。
ステップ 2: テストデータの生成とロード
次のコマンドを実行して、データベース、テーブル、データセットを作成し、データを StarRocks にロードします。
sh ssb_dataload.sh
ステップ 3: クエリの実行と結果の表示
次のいずれかのモードを使用してクエリを実行します。概要がターミナルに出力され、詳細が記載された result.csv ファイルが現在のディレクトリに保存されます。
-
ワイドテーブルモード — 事前に結合されたフラットテーブルにクエリを実行します:
sh ssb_query.sh ssb-flat -
標準モード — 元のスタースキーマテーブルにクエリを実行します:
sh ssb_query.sh ssb
出力の各値は、ミリ秒単位のクエリ応答時間です。値が小さいほど、パフォーマンスが高いことを示します。
次のステップ
-
conf/starrocks.confのscale_factorを調整して、より大きなデータ量でテストし、パフォーマンスがどのようにスケールするかを確認します。 -
bitmap_index: trueを有効にしてベンチマークを再実行し、ビットマップインデックス機能が Q2.2、Q2.3、Q3.3 に与える影響を測定します。