すべてのプロダクト
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 vCPU、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インスタンスの作成」をご参照ください。

      説明

      PolarDB-XインスタンスとECSインスタンスが同じVPCにあることを確認します。

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

      CREATE DATABASE sbtest;
  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='dbpartition by hash(id)'  --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エラーコードなど、無視するMySQLエラーコード。

    • range-size: クエリが実行される範囲に基づく範囲。

    • oltp_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
    • oltp_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
    • oltp_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
    • oltp_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
    • oltp_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
    • oltp_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

201462.73

4C32G * 4

1000

324683.03

8C64G * 2

1000

308174.91

8C64G * 4

2000

635865.65

read_only

image

インスタンス仕様

同時スレッド数

QPS

4C32G * 2

600

62446.59

4C32G * 4

1000

94930.57

8C64G * 2

1000

88487.24

8C64G * 4

2000

162330.95

read_write

image

インスタンス仕様

同時スレッド数

QPS

4C32G * 2

600

43098.16

4C32G * 4

600

68750.24

8C64G * 2

600

57730.62

8C64G * 4

600

111261.22

update_index

image

インスタンス仕様

同時スレッド数

QPS

4C32G * 2

600

49530.87

4C32G * 4

600

86850.17

8C64G * 2

600

65750.01

8C64G * 4

1000

137154.16

update_non_index

image

インスタンス仕様

同時スレッド数

QPS

4C32G * 2

400

50627.05

4C32G * 4

1000

90555.72

8C64G * 2

1000

68838.02

8C64G * 4

1000

137071.73

write_only

image

インスタンス仕様

同時スレッド数

QPS

4C32G * 2

400

38636.02

4C32G * 4

600

70974.3

8C64G * 2

600

52344.94

8C64G * 4

600

101282.38

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

166590.48

4C32G * 4

1000

288516.53

8C64G * 2

1000

350510.72

8C64G * 4

2000

637414.68

read_only

image

インスタンス仕様

同時スレッド数

QPS

4C32G * 2

600

59770.01

4C32G * 4

1000

71259.87

8C64G * 2

1000

69829.69

8C64G * 4

2000

128366.39

read_write

image

インスタンス仕様

同時スレッド数

QPS

4C32G * 2

600

56134.05

4C32G * 4

600

55817.45

8C64G * 2

600

60482.86

8C64G * 4

600

92855.15

update_index

image

インスタンス仕様

同時スレッド数

QPS

4C32G * 2

600

37474.15

4C32G * 4

600

57344.42

8C64G * 2

600

55856.94

8C64G * 4

1000

87618.81

update_non_index

image

インスタンス仕様

同時スレッド数

QPS

4C32G * 2

400

38017.57

4C32G * 4

1000

60779.25

8C64G * 2

1000

58065.02

8C64G * 4

1000

91060.65

write_only

image

インスタンス仕様

同時スレッド数

QPS

4C32G * 2

400

29476.72

4C32G * 4

600

47558.73

8C64G * 2

600

41032.61

8C64G * 4

600

65794.57