TiDB v7.1.3 のTiDB Cloud Sysbench パフォーマンス テスト レポート
このドキュメントでは、TiDBバージョン7.1.3を搭載したTiDB Cloud DedicatedクラスタのSysbenchパフォーマンステストの手順と結果について説明します。このレポートは、TiDB Self-Managedバージョン7.1.3クラスタのパフォーマンスの参考資料としてもご利用いただけます。
テストの概要
このテストの目的は、オンライン トランザクション処理 (OLTP) シナリオにおける TiDB v7.1.3 の Sysbench パフォーマンスを示すことです。
テスト環境
TiDB クラスター
テストは、次の設定で TiDB クラスターで実行されます。
クラスタタイプ: TiDB Cloud専用
クラスタバージョン: v7.1.3
クラウドプロバイダー: AWS (us-west-2)
クラスタ構成:
ノードタイプ ノードサイズ ノード数 ノードstorage TiDB 16 vCPU、32 GiB 2 該当なし TiKV 16 vCPU、64 GiB 3 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_non_indexoltp_update_indexロードの場合は、prefill-for-recycleパラメータoltp_read_write有効にします。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を実行して、32個のテーブルと10,000,000行をsbtest${PORT}にインポート${THREAD}ます。5、7、9、11${HOST}実際の値に置き換え${PASSWORD}ください。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 runを実行すると、Sysbenchのパフォーマンステストoltp_update_non_index異なるワークロードで実行でき200。このドキュメントでは、oltp_point_selectoltp_read_write5つのワークロードでテスト400実施します。各ワークロードについて、${THREAD}値が100である3つのテストoltp_update_index実施します。各同時実行数で、テストoltp_insertは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}
テスト結果
このセクションでは、 テスト環境における v7.1.3 の Sysbench パフォーマンスを紹介します。
ポイントセレクトパフォーマンス
oltp_point_selectワークロードのパフォーマンスは次のとおりです。
| スレッド | TPS | 95%レイテンシー(ミリ秒) |
|---|---|---|
| 50 | 35309 | 1.93 |
| 100 | 64853 | 2.00 |
| 200 | 118462 | 2.22 |

読み書きパフォーマンス
oltp_read_writeワークロードのパフォーマンスは次のとおりです。
| スレッド | TPS | 95%レイテンシー(ミリ秒) |
|---|---|---|
| 50 | 1218 | 48.3 |
| 100 | 2235 | 53.9 |
| 200 | 3380 | 87.6 |

インデックス以外のパフォーマンスの更新
oltp_update_non_indexワークロードのパフォーマンスは次のとおりです。
| スレッド | TPS | 95%レイテンシー(ミリ秒) |
|---|---|---|
| 100 | 10928 | 11.7 |
| 200 | 19985 | 12.8 |
| 400 | 35621 | 14.7 |

インデックスのパフォーマンスを更新する
oltp_update_indexワークロードのパフォーマンスは次のとおりです。
| スレッド | TPS | 95%レイテンシー(ミリ秒) |
|---|---|---|
| 100 | 8854 | 14.7 |
| 200 | 14414 | 18.6 |
| 400 | 21997 | 25.3 |

挿入パフォーマンス
oltp_insertワークロードのパフォーマンスは次のとおりです。
| スレッド | TPS | 95%レイテンシー(ミリ秒) |
|---|---|---|
| 100 | 15575 | 8.13 |
| 200 | 25078 | 11.0 |
| 400 | 38436 | 15.6 |
