SSB フラットテーブルベンチマーク
スタースキーマベンチマーク (SSB) は、OLAP データベース製品の基本的なパフォーマンス指標をテストするために設計されています。SSB は、学術界や業界で広く適用されているスタースキーマのテストセットを使用しています。詳細については、論文 Star Schema Benchmark を参照してください。 ClickHouse はスタースキーマを広いフラットテーブルにフラット化し、SSB を単一テーブルのベンチマークに書き換えます。詳細については、Star schema benchmark of ClickHouse を参照してください。 このテストでは、StarRocks、Apache Druid、および ClickHouse の SSB 単一テーブルデータセットに対するパフォーマンスを比較します。
テスト結論
- SSB 標準データセットに対して実行された 13 のクエリのうち、StarRocks は ClickHouse の 2.1 倍、Apache Druid の 8.7 倍 のクエリパフォーマンスを持っています。
- StarRocks のビットマップインデックスが有効化されると、無効化された場合と比較してパフォーマンスが 1.3 倍になります。StarRocks の全体的なパフォーマンスは、ClickHouse の 2.8 倍、Apache Druid の 11.4 倍 です。

テスト準備
ハードウェア
| マシン | 4 クラウドホスト |
|---|---|
| CPU | 16-Core Intel (R) Xeon (R) Platinum 8269CY CPU @2.50GHz キャッシュサイズ: 36608 KB |
| メモリ | 64 GB |
| ネットワ ーク帯域幅 | 5 Gbit/s |
| ディスク | ESSD |
ソフトウェア
StarRocks、Apache Druid、および ClickHouse は同じ構成のホストにデプロイされています。
- StarRocks: 1 つの FE と 3 つの BE。FE は BE と分離またはハイブリッドでデプロイできます。
- ClickHouse: 分散テーブルを持つ 3 ノード
- Apache Druid: 3 ノード。1 つは Master Servers と Data Servers でデプロイされ、1 つは Query Servers と Data Servers でデプロイされ、3 つ目は Data Servers のみでデプロイされます。
カーネルバージョン: Linux 3.10.0-1160.59.1.el7.x86_64
OS バージョン: CentOS Linux リリース 7.9.2009
ソフトウェアバージョン: StarRocks Community Version 3.0、ClickHouse 23.3、Apache Druid 25.0.0
テストデータと結果
テストデータ
| テーブル | レコード | 説明 |
|---|---|---|
| lineorder | 6 億 | Lineorder ファクトテーブル |
| customer | 300 万 | Customer 次元テーブル |
| part | 140 万 | Parts 次元テーブル |
| supplier | 20 万 | Supplier 次元テーブル |
| dates | 2,556 | Date 次元テーブル |
| lineorder_flat | 6 億 | lineorder フラットテーブル |
テスト結果
以下の表は、13 のクエリに対するパフォーマンステスト結果を示しています。クエリの遅延の単位は ms です。すべてのクエリは 1 回ウォームアップされ、その後 3 回実行され、平均値が結果として取られます。表のヘッダーの ClickHouse vs StarRocks は、ClickHouse のクエリ応答時間を StarRocks のクエリ応答時間で割った値を意味します。値が大きいほど、StarRocks のパフォーマンスが優れていることを示します。
| StarRocks-3.0 | StarRocks-3.0-index | ClickHouse-23.3 | ClickHouse vs StarRocks | Druid-25.0.0 | Druid vs StarRocks | |
|---|---|---|---|---|---|---|
| Q1.1 | 33 | 30 | 48 | 1.45 | 430 | 13.03 |
| Q1.2 | 10 | 10 | 15 | 1.50 | 270 | 27.00 |
| Q1.3 | 23 | 30 | 14 | 0.61 | 820 | 35.65 |
| Q2.1 | 186 | 116 | 301 | 1.62 | 760 | 4.09 |
| Q2.2 | 156 | 50 | 273 | 1.75 | 920 | 5.90 |
| Q2.3 | 73 | 36 | 255 | 3.49 | 910 | 12.47 |
| Q3.1 | 173 | 233 | 398 | 2.30 | 1080 | 6.24 |
| Q3.2 | 120 | 80 | 319 | 2.66 | 850 | 7.08 |
| Q3.3 | 123 | 30 | 227 | 1.85 | 890 | 7.24 |
| Q3.4 | 13 | 16 | 18 | 1.38 | 750 | 57.69 |
| Q4.1 | 203 | 196 | 469 | 2.31 | 1230 | 6.06 |
| Q4.2 | 73 | 76 | 160 | 2.19 | 1020 | 13.97 |
| Q4.3 | 50 | 36 | 148 | 2.96 | 820 | 16.40 |
| 合計 | 1236 | 939 | 2645 | 2.14 | 10750 | 8.70 |
テスト手順
ClickHouse テーブルの作成方法やテーブルへのデータロードについては、ClickHouse official doc を参照してください。以下のセクションでは、StarRocks のデータ生成とデータロードについて説明します。
データ生成
ssb-poc ツールキットをダウンロードしてコンパイルします。
wget https://starrocks-public.oss-cn-zhangjiakou.aliyuncs.com/ssb-poc-1.0.zip
unzip ssb-poc-1.0.zip
cd ssb-poc-1.0/
make && make install
cd output/
コンパイル後、関連するすべてのツールが output ディレクトリにインストールされ、以下の操作はすべてこのディレクトリで行われます。
まず、SSB 標準データセット scale factor=100 のデータを生成します。
sh bin/gen-ssb.sh 100 data_dir
テーブルスキーマの作成
-
設定ファイル
conf/starrocks.confを修正し、クラスターアドレスを指定します。特にmysql_hostとmysql_portに注意してください。 -
次のコマンドを実行してテーブルを作成します。
sh bin/create_db_table.sh ddl_100
データのクエリ
sh bin/benchmark.sh ssb-flat
ビットマップインデックスの有効化
StarRocks はビットマップインデックスが有効化されているときにより良いパフォーマンスを発揮します。特に Q2.2、Q2.3、Q3.3 でビットマップインデックスが有効化された StarRocks のパフォーマンスをテストしたい場合は、すべての STRING 列にビットマップインデックスを作成できます。
-
別の
lineorder_flatテーブルを作成し、ビットマップインデックスを作成します。sh bin/create_db_table.sh ddl_100_bitmap_index -
すべての BEs の
be.confファイルに次の設定を追加し、設定が有効になるように BEs を再起動します。bitmap_max_filter_ratio=1000 -
データロードスクリプトを実行します。
sh bin/flat_insert.sh data_dir
データがロードされた後、データバージョンのコンパクションが完了するのを待ち、ビットマップインデックスが有効化された後に 4.4 を再度実行してデータをクエリします。
データバージョンのコンパクションの進行状況は、select CANDIDATES_NUM from information_schema.be_compactions を実行して確認できます。3 つの BE ノードに対して、以下の結果が表示されればコンパクションが完了しています。
mysql> select CANDIDATES_NUM from information_schema.be_compactions;
+----------------+
| CANDIDATES_NUM |
+----------------+
| 0 |
| 0 |
| 0 |
+----------------+
3 rows in set (0.01 sec)