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

PolarDB:Sysbenchテスト

最終更新日:Aug 15, 2024

このトピックでは、MySQL 5.7およびMySQL 8.0のPolarDB-XでのSysbenchテストの設計、プロセス、および結果について説明します。

背景情報

Sysbenchは、複数のスレッドを使用して、さまざまなプラットフォーム間でCPU、メモリ、スレッド、I/Oなどのデータベースのパフォーマンスをテストできる、オープンソースのモジュラーツールです。 このトピックでは、さまざまなシナリオでPolarDB-X Sysbenchテストのパフォーマンスを検証します。

テストデザイン

  • 量のテストデータ

    このトピックで説明されているSysbenchテストの結果は、16の表に基づいて得られます。 各テーブルには1,000万行のデータが含まれています。

  • テストのインスタンス仕様

    インスタンス仕様

    ノード数

    4C32G

    2

    4C32G

    4

    8C64G

    2

    8C64G

    4

  • ストレステスト用ECSインスタンスタイプ

    ecs.g7ne.8xlarge (32 CPUコア、128 GBのメモリ)

手順

  1. ストレステスト用のElastic Compute Service (ECS) インスタンスを作成します。

    データの準備とストレステストの実行に使用されるECSインスタンスを作成します。 高仕様のPolarDB-Xインスタンスをテストする際のパフォーマンスのボトルネックを防ぐため、32 vCPUと128 GBのメモリを備えたECSインスタンスを作成することを推奨します。

    説明

    ECSインスタンスは、仮想プライベートクラウド (VPC) にデプロイする必要があります。 後で使用するために、VPCの名前とIDを記録します。 後続の手順で説明するすべてのデータベースインスタンスをVPCにデプロイする必要があります。

  2. ストレステスト用のPolarDB-Xインスタンスを作成します。

    1. PolarDB-Xインスタンスを作成します。 ビジネス要件に基づいて、MySQL 5.7またはMySQL 8.0データベースエンジンを選択します。 PolarDB-Xインスタンスの作成方法については、「PolarDB-Xインスタンスの作成」をご参照ください。

    2. インスタンスにデータベースを作成します (この例では、データベース名はsbtestです) 。 詳細については、「データベースの作成」をご参照ください。

      CREATE DATABASE sbtest MODE = 'auto';
  3. インスタンスパラメーターの変更

    説明

    ストレステストで最適なパフォーマンスを実現するには、PolarDB-Xインスタンスの計算ノードの特定のパラメーターを変更します。

    1. ENABLE_COROUTINEパラメーターをtrueに設定し、XPROTO_MAX_DN_CONCURRENTパラメーターとXPROTO_MAX_DN_WAIT_CONNECTIONパラメーターを4000に設定します。 詳細については、「パラメーター設定」をご参照ください。

    2. コマンドラインクライアントを使用してPolarDB-Xインスタンスに接続します。 次に、同じセッションで次のSQL文を実行して、ロギングとCPU統計サンプリングを無効にします。

      set global RECORD_SQL=false;
      set global MPP_METRIC_LEVEL=0;
      set global ENABLE_CPU_PROFILE=false;
      set global ENABLE_TRANS_LOG=false;
  4. ストレステスト用のデータを準備します。

    1. ストレステストツールパッケージbenchmarksql.tar.gzをダウンロードし、次のコマンドを実行して解凍します。

      tar xzvf sysbench.tar.gz
      cd sysbench/

      次のコマンドを実行して、依存関係をインストールしてコンパイルします。

      yum -y install make automake libtool pkgconfig libaio-devel mysql-devel
      ./autogen.sh
      ./configure
      make -j
      make install

      synben -- versionコマンドを実行します。 sysbench 1.1.0が返された場合、ストレステストツールがインストールされます。

      GitHubからオープンソースのSysbenchをダウンロードすることもできます。 詳細については、『GitHubのsysbench』をご参照ください。

    2. ストレステスト用のデータを設定します。

      設定ファイルsysb.confを作成し、設定ファイルにPolarDB-X接続情報を入力します。 次の例は、設定ファイルの内容を示しています。 例の後のこのセクションでは、構成ファイルのパラメータについて説明します。

      mysql-host='{HOST}'
      mysql-port='{PORT}'
      mysql-user='{USER}'
      mysql-password='{PASSWORD}'
      mysql-db='sbtest'
      db-driver='mysql'
      percentile='95'
      histogram='on'
      report-interval='1'
      time='60'
      rand-type='uniform'

      設定ファイル内のパラメータ:

      • パーセンタイル: 応答時間のサンプリングに基づくパーセンタイル。

      • histogram: 応答時間分布のヒストグラムを表示するかどうかを指定します。

      • report-interval: リアルタイムの結果が表示される間隔。 (秒単位)。

      • time: ストレステストの期間。 (秒単位)。

      • rand-type: 乱数の生成に使用される分布タイプ。

    3. ストレステストデータをインポートします。

      sysbench --config-file='sysb.conf' --create-table-options='single locality="balance_single_table=on"'  --tables='16' --table-size='10000000' --threads='16' --auto_inc='off' oltp_point_select prepare

      コマンドのパラメータ:

      • config-file: 共通設定ファイルを指定します。

      • create-table-options: テーブルの作成に使用するモードを指定します。

      • tables: テーブルの数を指定します。

      • table-size: テーブルに含めることができるデータの量を指定します。

      • threads: データのインポートに使用される同時スレッドの数を指定します。

      • auto_inc: auto_incrementを使用するかどうかを指定します。

  5. ストレステストを実行します。

    次のコマンドを実行して、Sysbenchで定義されている6つのシナリオでテストを実行します。 最初のストレステストの期間を長くすることをお勧めします。

    説明

    コマンドのパラメータ:

    • db-ps-mode: 準備モードを有効にするかどうかを指定します。

    • mysql-ignore-errors: ロックの競合によって発生した一部のMySQLエラーコードが無視されることを指定します。

    • range-size: クエリを実行する範囲に基づいて範囲を指定します。

    • point_select:

      sysbench --config-file='sysb.conf' --db-ps-mode='disable'  --mysql-ignore-errors='all'  --tables='16' --table-size='10000000' --threads={Number of concurrent threads} oltp_point_select run
    • read_only:

      sysbench --config-file='sysb.conf' --db-ps-mode='disable' --mysql-ignore-errors='all' --tables='16' --table-size='10000000' --range-size=5 --threads={Number of concurrent threads} oltp_read_only run
    • read_write:

      sysbench --config-file='sysb.conf' --db-ps-mode='disable'  --mysql-ignore-errors='all' --tables='16' --table-size='10000000' --range-size=5 --threads={Number of concurrent threads} oltp_read_write run
    • update_index:

      sysbench --config-file='sysb.conf' --db-ps-mode='disable'  --mysql-ignore-errors='all' --tables='16' --table-size='10000000' --threads={Number of concurrent threads} oltp_update_index run
    • update_non_index:

      sysbench --config-file='sysb.conf' --db-ps-mode='disable'  --mysql-ignore-errors='all' --tables='16' --table-size='10000000' --threads={Number of concurrent threads} oltp_update_non_index run
    • write_only:

      sysbench --config-file='sysb.conf' --db-ps-mode='disable'  --mysql-ignore-errors='all'  --tables='16' --table-size='10000000' --threads={Number of concurrent threads} oltp_write_only run

テスト結果

MySQL 5.7

説明
  • PolarDB-Xバージョン: polardb-2.4.0_5.4.19-20240610_xcluster5.4.19-20240527。 詳細については、「リリースノート」をご参照ください。

  • 次のテスト結果では、QPS値を使用してデータベースのパフォーマンスを測定します。

point_select

image

インスタンス仕様

同時スレッド数

QPS

4C32G * 2

1000

194921.53

4C32G * 4

1000

355299.81

8C64G * 2

1000

304538.44

8C64G * 4

2000

618634.19

読み取り_のみ

image

インスタンス仕様

同時スレッド数

QPS

4C32G * 2

600

191075.61

4C32G * 4

1000

308160.47

8C64G * 2

1000

308352.62

8C64G * 4

2000

598847.81

read_write

image

インスタンス仕様

同時スレッド数

QPS

4C32G * 2

600

102279.28

4C32G * 4

600

161648.89

8C64G * 2

600

142095.41

8C64G * 4

600

243955.73

update_index

image

インスタンス仕様

同時スレッド数

QPS

4C32G * 2

600

50092.01

4C32G * 4

600

89559.24

8C64G * 2

600

65857.4

8C64G * 4

1000

130311.38

update_non_インデックス

image

インスタンス仕様

同時スレッド数

QPS

4C32G * 2

400

50393.43

4C32G * 4

1000

92495.24

8C64G * 2

1000

69030.37

8C64G * 4

1000

138283.81

write_のみ

image

インスタンス仕様

同時スレッド数

QPS

4C32G * 2

400

52322.07

4C32G * 4

600

81170.89

8C64G * 2

600

69120.16

8C64G * 4

600

114337.76

MySQL 8.0

説明
  • PolarDB-Xバージョン: polardb-2.4.0_5.4.19-20240610_xcluster8.4.19-20240523。 詳細については、「リリースノート」をご参照ください。

  • 次のテスト結果では、QPS値を使用してデータベースのパフォーマンスを測定します。

point_select

image

インスタンス仕様

同時スレッド数

QPS

4C32G * 2

1000

165611.83

4C32G * 4

1000

309981.94

8C64G * 2

1000

345505.5

8C64G * 4

2000

618638.91

read_only

image

インスタンス仕様

同時スレッド数

QPS

4C32G * 2

600

167945.12

4C32G * 4

1000

296882.66

8C64G * 2

1000

301085.34

8C64G * 4

2000

534553.26

read_write

image

インスタンス仕様

同時スレッド数

QPS

4C32G * 2

600

78310

4C32G * 4

600

113646.43

8C64G * 2

600

119788.57

8C64G * 4

600

179227.38

update_index

image

インスタンス仕様

同時スレッド数

QPS

4C32G * 2

600

38220.55

4C32G * 4

600

63354.87

8C64G * 2

600

55573.63

8C64G * 4

1000

90181.68

update_non_index

image

インスタンス仕様

同時スレッド数

QPS

4C32G * 2

400

37439.38

4C32G * 4

1000

66362.21

8C64G * 2

1000

63527.22

8C64G * 4

1000

92856.59

write_のみ

image

インスタンス仕様

同時スレッド数

QPS

4C32G * 2

400

37884.63

4C32G * 4

600

52481.99

8C64G * 2

600

58711.55

8C64G * 4

600

74967.45