すべてのプロダクト
Search
ドキュメントセンター

PolarDB:Sysbench user guide

最終更新日:May 17, 2025

このトピックでは、Sysbench を使用して PolarDB-X 1.0 のパフォーマンスをテストする方法について説明します。

インストール

この例では、パフォーマンス テストに Sysbench 0.5 を使用します。インストールコード:

git clone https://github.com/akopytov/sysbench.git
cd sysbench
git checkout 0.5

yum -y install make automake libtool pkgconfig libaio-devel
yum -y install mariadb-devel


./autogen.sh
./configure
make -j
make install
            

前述のコードは、パフォーマンス テスト用に ECS インスタンスに Sysbench をインストールするためのものです。異なるオペレーティングシステムに Sysbench をインストールするには、Sysbench の公式ドキュメントをご参照ください。

インストールが完了すると、PolarDB-X 1.0 のパフォーマンステストで使用されるすべての組み込みベンチマークスクリプトは、/usr/local/share/sysbench ディレクトリに保存されます。これらのスクリプトは、ソースコードディレクトリ sysbench/sysbench/tests/db にもあります。

使用方法

一般的なベンチマークモデル

Sysbench は、スクリプトを使用して定義された、以下の一般的に使用されるベンチマークモデルを提供します。

ベンチマークモデル

説明

bulk_insert.lua

バルクデータ挿入。

insert.lua

単一値データ挿入。

delete.lua

データ削除。

oltp.lua

読み取りと書き込みの比率が 14:4 の混合読み取り/書き込みテスト。

select.lua

単純なプライマリキークエリ。

テーブルスキーマ

PolarDB-X 1.0 をテストするために、Sysbench テストテーブルはシャーディング構造を採用するように変更されています。

CREATE TABLE `sbtest1` (
  `id` int(10) unsigned NOT NULL,
  `k` int(10) unsigned NOT NULL DEFAULT '0',
  `c` char(120) NOT NULL DEFAULT '',
  `pad` char(60) NOT NULL DEFAULT '',
  KEY `xid` (`id`),
  KEY `k_1` (`k`)
) dbpartition by hash(`id`) tbpartition by hash(`id`) tbpartitions 4
            

データベースシャードとテーブルパーティションの数は、必要に応じて調整できます。 Sysbench テストのデータ準備フェーズでは、提供されたスキーマに基づいてテーブルが自動的に生成されます。

テストコマンドとパラメーター

Sysbench ベースのベンチマークには、次の手順が含まれます。

  • prepare: データを準備します。

  • run: ベンチマークモデルを実行します。

  • cleanup: テストデータをクリーンアップします。

ほとんどの場合、データを準備する必要があるのは 1 回だけです。この準備済みデータに基づいて、さまざまなモデルをテストできます。

一般的に使用されるパラメーター

  • --oltp-tables-count=1: テーブルの数。

  • --oltp-table-size=10000000: テーブルごとに生成される行数。

  • --oltp-read-only=off: 読み取り専用の SQL クエリを生成するかどうかを指定します。デフォルト値: off。 on に設定すると、OLTP モデルは UPDATEDELETE、または INSERT 文を生成しません。

  • --oltp-skip-trx=[on|off]: BEGIN 文と COMMIT 文をスキップするかどうかを指定します。デフォルト値: off。

  • --rand-init=on: データをランダムに初期化するかどうかを指定します。 off に設定すると、初期データ行の内容はプライマリキーを除いて同じになります。

  • --num-threads=12: 同時スレッド数 (またはシミュレートされたクライアント接続数)。

  • --report-interval=10: パフォーマンスメトリックのレポート間隔 (秒単位)。

  • --max-requests=0: テスト中に生成されるリクエストの総数。 max-time パラメーターを使用してテスト期間を指定する場合は、このパラメーターを 0 に設定できます。

  • --max-time=120: テストの実行時間 (秒単位)。

  • --oltp_auto_inc=off: ID 列が自動インクリメント列かどうかを指定します。

  • --oltp_secondary=on: プライマリキーの競合を防ぐために、ID 列を非プライマリキーとして設定するかどうかを指定します。

  • --oltp_range_size=5: クエリ内の連続値の範囲サイズを指定します。

  • --mysql_table_options='dbpartition by hash(id) tbpartition by hash(id) tbpartitions 2': PolarDB-X 1.0 でのテーブル作成のシャーディングポリシー

サンプルコマンド

次のコマンドを使用して、対応する操作を実行できます。

説明

コマンドを実行する前に、手動で テストデータベースを作成 し、実際の情報に基づいて次のパラメーターを変更してください。

  • <user_name>: アカウント名。

  • <password>: アカウントパスワード。

  • <host>: 非公開またはパブリックエンドポイント。

  • <port>: 非公開またはパブリックエンドポイントに対応するポート番号。

  • <db_name>: データベース名。

データを準備する:

sysbench --test='/usr/local/share/sysbench/oltp.lua' --oltp-tables-count=1 --report-interval=10 --oltp-table-size=10000000  --mysql-user= --mysql-password= --mysql-table-engine=innodb  --rand-init=on  --mysql-host= --mysql-port= --mysql-db= --max-time=300 --max-requests=0   --oltp_skip_trx=on --oltp_auto_inc=off  --oltp_secondary=on --oltp_range_size=5 --mysql_table_options='dbpartition by hash(`id`) tbpartition by hash(`id`) tbpartitions 2' --num-threads=200   prepare

テストを実行する:

sysbench --test='/usr/local/share/sysbench/oltp.lua' --oltp-tables-count=1 --report-interval=10 --oltp-table-size=10000000  --mysql-user= --mysql-password= --mysql-table-engine=innodb  --rand-init=on  --mysql-host= --mysql-port= --mysql-db= --max-time=300 --max-requests=0   --oltp_skip_trx=on --oltp_auto_inc=off --oltp_secondary --oltp_range_size=5 --mysql_table_options='dbpartition by hash(`id`) tbpartition by hash(`id`) tbpartitions 2' --num-threads=200 run

環境をクリーンアップする:

sysbench --test='/usr/local/share/sysbench/oltp.lua' --oltp-tables-count=1 --report-interval=10 --oltp-table-size=10000000  --mysql-user= --mysql-password= --mysql-table-engine=innodb  --rand-init=on  --mysql-host= --mysql-port= --mysql-db= --max-time=300 --max-requests=0   --oltp_skip_trx=on --oltp_auto_inc=off --oltp_secondary --oltp_range_size=5 --mysql_table_options='dbpartition by hash(`id`) tbpartition by hash(`id`) tbpartitions 2' --num-threads=200 cleanup