メインコンテンツまでスキップ
バージョン: 3.13

ScalarDB ベンチマークツール

注記

このページは英語版のページが機械翻訳されたものです。英語版との間に矛盾または不一致がある場合は、英語版を正としてください。

このチュートリアルでは、ScalarDB のベンチマークツールを実行する方法について説明します。データベースベンチマークは、一連の標準データセットワークロードに対するデータベースのパフォーマンスを評価するのに役立ちます。

ベンチマークのワークロード

  • TPC-C
  • YCSB (ワークロード A、C、および F)
  • マルチストレージ YCSB (ワークロード C および F)
    • この YCSB バリアントは、ScalarDB を使用するマルチストレージ環境用です。
    • マルチストレージ YCSB のワーカーは、2 つの名前空間 (ycsb_primaryycsb_secondary) で同じ数の読み取り操作と書き込み操作を実行します。

前提条件

  • 次の Java 開発キット (JDK) のいずれか:
  • Gradle
  • Kelpie
    • Kelpie は、システムのベンチマークや検証などのエンドツーエンドのテストを実行するためのフレームワークです。 Kelpie Releases から最新バージョンを入手し、アーカイブファイルを解凍します。
  • ベンチマークツールを実行するクライアント
  • ターゲットデータベース
    • ScalarDB がサポートするデータベースの一覧については、Supported Databases を参照してください。
注記

現在、ベンチマークツールを実行するときに使用できるのは JDK 8 のみです。

ベンチマークツールをセットアップする

次のセクションでは、ベンチマークツールのセットアップ方法について説明します。

ScalarDB ベンチマークリポジトリをクローンする

ターミナルを開き、次のコマンドを実行して ScalarDB ベンチマークリポジトリのクローンを作成します。

git clone https://github.com/scalar-labs/scalardb-benchmarks

次に、下記のコマンドを実行して、ベンチマークファイルが含まれるディレクトリに移動します。

cd scalardb-benchmarks

ツールをビルドする

ベンチマークツールをビルドするには、次のコマンドを実行します。

./gradlew shadowJar

スキーマをロードする

初期データをロードする前に、ScalarDB Schema Loader を使用してテーブルを定義する必要があります。スキーマを適用するには、ScalarDB Releases ページに移動し、使用している ScalarDB のバージョンに一致する ScalarDB Schema Loader を scalardb-benchmarks ルートフォルダーにダウンロードします。

さらに、ScalarDB のデータベース設定を含むプロパティファイルが必要です。ScalarDB プロパティファイルの設定の詳細については、ScalarDB 設定を参照してください。

スキーマを適用してプロパティファイルを設定したら、ベンチマークを選択し、指示に従ってテーブルを作成します。

TPC-C ベンチマーク用のテーブル (tpcc-schema.json) を作成するには、山括弧内の内容を説明に従って置き換えて、次のコマンドを実行します。

java -jar scalardb-schema-loader-<VERSION>.jar --config <PATH_TO_SCALARDB_PROPERTIES_FILE> -f tpcc-schema.json --coordinator

ベンチマーク設定ファイルを準備する

ベンチマークを実行するには、まずベンチマーク設定ファイルを準備する必要があります。設定ファイルには、少なくとも実行するワークロードモジュールの場所とデータベース設定が必要です。

以下は、TPC-C ベンチマークを実行するための設定例です。config_file に指定する ScalarDB プロパティファイルは、以前に設定したベンチマーク環境のプロパティファイルである必要があります。

注記

または、ScalarDB プロパティファイルを使用する代わりに、.toml ファイルで各データベース設定項目を指定することもできます。config_file が指定されている場合、[database_config] の下の他のすべての設定は、コメントが解除されていても無視されます。

[modules]
[modules.preprocessor]
name = "com.scalar.db.benchmarks.tpcc.TpccLoader"
path = "./build/libs/scalardb-benchmarks-all.jar"
[modules.processor]
name = "com.scalar.db.benchmarks.tpcc.TpccBench"
path = "./build/libs/scalardb-benchmarks-all.jar"
[modules.postprocessor]
name = "com.scalar.db.benchmarks.tpcc.TpccReporter"
path = "./build/libs/scalardb-benchmarks-all.jar"

[database_config]
config_file = "<PATH_TO_SCALARDB_PROPERTIES_FILE>"
#contact_points = "localhost"
#contact_port = 9042
#username = "cassandra"
#password = "cassandra"
#storage = "cassandra"

モジュールに渡すパラメータは設定ファイルで定義できます。詳細については、以下のサンプル設定ファイルと 共通パラメータで使用可能なパラメータを参照してください。

ベンチマークを実行する

ベンチマークを選択し、指示に従ってベンチマークを実行します。

TPC-C ベンチマークを実行するには、<PATH_TO_KELPIE> を Kelpie ディレクトリへのパスに置き換えて、次のコマンドを実行します。

/<PATH_TO_KELPIE>/bin/kelpie --config tpcc-benchmark-config.toml

さらに、次のオプションが利用可能です。

  • --only-pre。データのみをロードします。
  • --only-process。ベンチマークのみを実行します。
  • --except-pre。データをロードせずにジョブを実行します。
  • --except-process。ベンチマークを実行せずにジョブを実行します。

共通パラメータ

名前説明デフォルト
concurrencyベンチマーク用のスレッド数。1
run_for_secベンチマークの継続時間 (秒単位)。60
ramp_for_secベンチマーク前の立ち上げ時間 (秒単位)。0

ワークロード固有のパラメータ

ワークロードを選択すると、使用可能なパラメータが表示されます。

名前説明デフォルト
num_warehousesベンチマーク用のウェアハウスの数 (スケール係数)。1
load_concurrencyロード用のスレッド数。1
load_start_warehouseロード中のウェアハウスの開始 ID。このオプションは、複数のクライアントで大規模なデータをロードする場合や、ウェアハウスを追加する場合に、--skip-item-load と一緒に使用すると便利です。1
load_end_warehouseロード中のウェアハウスの終了 ID。ロード中のウェアハウスの数を指定するには、--num-warehouses または --end-warehouse のいずれかを使用できます。1
skip_item_loadアイテムテーブルのロードをスキップするかどうか。false
use_table_indexScalarDB のセカンダリインデックスの代わりに、汎用テーブルベースのセカンダリインデックスを使用するかどうか。false
np_only新規注文と支払いトランザクションのみ (それぞれ 50%) でベンチマークを実行します。false
rate_new_order新規注文トランザクションの割合。必要に応じてこの割合を指定する場合、他のすべてのレートパラメータの割合を指定する必要があります。その場合、すべてのレートパラメータの合計は 100% に等しくなければなりません。N/A
rate_payment支払いトランザクションの割合。必要に応じてこの割合を指定する場合、他のすべてのレートパラメータの割合を指定する必要があります。その場合、すべてのレートパラメータの合計は 100% に等しくなければなりません。N/A
rate_order_status注文ステータストランザクションの割合。ニーズに基づいてこのパーセンテージを指定する場合、他のすべてのレートパラメータのパーセンテージを指定する必要があります。その場合、すべてのレートパラメータの合計は 100 パーセントに等しくなければなりません。N/A
rate_delivery配送トランザクションのパーセンテージ。ニーズに基づいてこのパーセンテージを指定する場合、他のすべてのレートパラメータのパーセンテージを指定する必要があります。その場合、すべてのレートパラメータの合計は 100 パーセントに等しくなければなりません。N/A
rate_stock_level在庫レベルトランザクションのパーセンテージ。ニーズに基づいてこのパーセンテージを指定する場合、他のすべてのレートパラメータのパーセンテージを指定する必要があります。その場合、すべてのレートパラメータの合計は 100 パーセントに等しくなければなりません。N/A
backoff競合によりトランザクションがアボートされた後に挿入されるスリープ時間 (ミリ秒単位)。0

Footnotes

  1. ワークロード A はトランザクションが最初に元のレコードを読み取ることを想定していないため、use_read_modify_write のデフォルト値は false です。ただし、トランザクションマネージャーとして Consensus Commit を使用している場合は、use_read_modify_writetrue に設定する必要があります。これは、ScalarDB が既存のレコードに対するブラインド書き込みを許可しないためです。