TiDB v8.1.0 のTiDB Cloud Sysbench パフォーマンス テスト レポート
このドキュメントでは、TiDB バージョン v8.1.0 を使用したTiDB Cloud Dedicated クラスターの Sysbench パフォーマンス テストの手順と結果について説明します。このレポートは、TiDB Self-Managed v8.1.0 クラスターのパフォーマンスのリファレンスとしても使用できます。
テストの概要
このテストの目的は、オンライン トランザクション処理 (OLTP) シナリオにおける TiDB v8.1.0 の Sysbench パフォーマンスを示すことです。
テスト環境
TiDB クラスター
テストは、次の設定で TiDB クラスター上で実行されます。
クラスタタイプ: TiDB Cloud専用
クラスタバージョン: v8.1.0
クラウドプロバイダー: AWS (us-west-2)
クラスタ構成:
ノードタイプ ノードサイズ ノード数 ノードstorage ティビ 16 vCPU、32 GiB 2 該当なし ティクヴ 16 vCPU、64 GiB 3 1000ギガバイト
パラメータ設定
システム変数tidb_session_plan_cache_size
は、キャッシュできるプランの最大数を制御します。デフォルト値は100
です。このドキュメントでは、ワークロードごとにtidb_session_plan_cache_size
を1000
に設定してテストを実施します。
SET GLOBAL tidb_session_plan_cache_size = 1000;
注記:
TiDB Cloudの場合、クラスターの TiKV パラメータを変更するには、 PingCAP サポート問い合わせてサポートを受けることができます。
TiKV パラメータprefill-for-recycle
を使用すると、初期化後すぐにログのリサイクルを有効にすることができます。このドキュメントでは、次のprefill-for-recycle
の構成を使用して、さまざまなワークロードに基づいてテストを実施します。
oltp_point_select
ワークロードの場合、prefill-for-recycle
パラメータのデフォルト値を使用します。raft-engine.prefill-for-recycle = falseoltp_insert
、およびoltp_update_index
oltp_read_write
ワークロードの場合は、prefill-for-recycle
パラメータをoltp_update_non_index
にします。raft-engine.prefill-for-recycle = true
ベンチマーク実行者
ベンチマーク エグゼキュータは、TiDB クラスタに SQL クエリを送信します。このテストでは、ハードウェア構成は次のとおりです。
- マシンタイプ: Amazon EC2 (us-west-2)
- インスタンスタイプ: c6a.2xlarge
- Sysbench バージョン: sysbench 1.0.20 (バンドルされた LuaJIT 2.1.0-beta2 を使用)
テスト手順
このセクションでは、Sysbench パフォーマンス テストを段階的に実行する方法を紹介します。
TiDB Cloudコンソールでは、 テスト環境要件を満たすTiDB Cloud Dedicated クラスターを作成します。
詳細についてはTiDB Cloud専用クラスターを作成する参照してください。
ベンチマーク エグゼキュータで、新しく作成されたクラスターに接続し、
sbtest
という名前のデータベースを作成します。クラスターに接続するには、 プライベートエンドポイント経由でTiDB Cloud Dedicatedに接続する参照してください。
sbtest
データベースを作成するには、次の SQL ステートメントを実行します。CREATE DATABASE sbtest;Sysbench データを
sbtest
データベースにロードします。このドキュメントのテストはシステムベンチに基づいて実装されています。sysbench をインストールするにはソースからのビルドとインストール参照してください。
次の
sysbench prepare
コマンド${PASSWORD}
実行して、32 個のテーブルと 10,000,000 行をsbtest
データベースにインポートします。5、7、9、${PORT}
${THREAD}
${HOST}
実際の値に置き換えます。
sysbench oltp_common \ --threads=${THREAD} \ --db-driver=mysql \ --mysql-db=sbtest \ --mysql-host=${HOST} \ --mysql-port=${PORT} \ --mysql-user=root \ --mysql-password=${PASSWORD} \ prepare --tables=32 --table-size=10000000さまざまなワークロードで Sysbench パフォーマンス テストを実行するには、次の
sysbench run
コマンドを実行します。このドキュメントでは、oltp_point_select
、oltp_read_write
、oltp_update_non_index
、oltp_update_index
、およびoltp_insert
の 5 つのワークロードでテストを実行します。各ワークロードについて、このドキュメントでは${THREAD}
変数の異なる値を使用して 3 つのテストを実行します。oltp_point_select
とoltp_read_write
場合、値は50
、100
、および200
です。その他のワークロードの場合、値は100
、200
、および400
です。同時実行ごとに、テストには 20 分かかります。sysbench ${WORKLOAD} run \ --mysql-host=${HOST} \ --mysql-port=${PORT} \ --mysql-user=root \ --db-driver=mysql \ --mysql-db=sbtest \ --threads=${THREAD} \ --time=1200 \ --report-interval=10 \ --tables=32 \ --table-size=10000000 \ --mysql-ignore-errors=1062,2013,8028,9007 \ --auto-inc=false \ --mysql-password=${PASSWORD}
テスト結果
このセクションでは、 テスト環境における v8.1.0 の Sysbench パフォーマンスを紹介します。
ポイントセレクトパフォーマンス
oltp_point_select
ワークロードのパフォーマンスは次のとおりです。
スレッド | TPPSについて | 95%レイテンシー(ミリ秒) |
---|---|---|
50 | 32,741 | 1.96 |
100 | 62,545 | 2.03 |
200 | 111,470 | 2.48 |
読み取り書き込みパフォーマンス
oltp_read_write
ワークロードのパフォーマンスは次のとおりです。
スレッド | TPPSについて | 95%レイテンシー(ミリ秒) |
---|---|---|
50 | 1,232 | 46.6 |
100 | 2,341 | 51 |
200 | 3,240 | 109 |
非インデックスパフォーマンスの更新
oltp_update_non_index
ワークロードのパフォーマンスは次のとおりです。
スレッド | TPPSについて | 95%レイテンシー(ミリ秒) |
---|---|---|
100 | 14,000 | 9.39 |
200 | 25,215 | 10.5 |
400 | 42,550 | 12.8 |
インデックスのパフォーマンスを更新する
oltp_update_index
ワークロードのパフォーマンスは次のとおりです。
スレッド | TPPSについて | 95%レイテンシー(ミリ秒) |
---|---|---|
100 | 11,188 | 11.7 |
200 | 17,805 | 14.7 |
400 | 24,575 | 23.5 |
挿入パフォーマンス
oltp_insert
ワークロードのパフォーマンスは次のとおりです。
スレッド | TPPSについて | 95%レイテンシー(ミリ秒) |
---|---|---|
100 | 18,339 | 7.3 |
200 | 29,387 | 9.73 |
400 | 42,712 | 14.2 |