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

ScalarDB ベンチマークツール

注記

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

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

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

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

前提条件

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

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

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

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

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

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

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

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

cd scalardb-benchmarks

ツールをビルドする

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

./gradlew shadowJar

スキーマをロードする

初期データをロードする前に、ScalarDB Schema Loader を使用してテーブルを定義する必要があります。ScalarDB Schema Loader は、ScalarDB Releases ページからダウンロードできます。ScalarDB へのアクセス方法に基づいて Schema Loader を選択してください。

  • ScalarDB コアライブラリ (コミュニティエディション) を使用する場合: 使用している ScalarDB のバージョンに応じて scalardb-schema-loader-<VERSION>.jar を選択します。次に、.jar ファイルを scalardb-benchmarks ルートディレクトリに保存します。
  • ScalarDB Cluster (エンタープライズエディション) を使用する場合: 使用している ScalarDB Cluster のバージョンに応じて scalardb-cluster-schema-loader-<VERSION>-all.jar を選択します。次に、.jar ファイルを scalardb-benchmarks ルート ディレクトリに保存します。

さらに、Java CRUD インターフェースを介して ScalarDB にアクセスするためのプロパティファイルも必要です。ScalarDB プロパティファイルの設定の詳細については、ScalarDB 設定または ScalarDB Cluster クライアント構成を参照してください。

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

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

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

ScalarDB Cluster を使用している場合は、代わりに次のコマンドを実行します。

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

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

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

以下は、TPC-C ベンチマークを実行するための設定例です。config_file に指定する ScalarDB プロパティファイルは、スキーマをロードするの手順の1つとして設定したプロパティファイルである必要があります。

注記

または、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 が既存のレコードに対するブラインド書き込みを許可しないためです。

This website uses cookies to enhance the visitor experience. By continuing to use this website, you acknowledge that you have read and understood our privacy policy and consent to the use of cookies to help improve your browsing experience and provide you with personalized content.