TiDB v8.5.0 のTiDB Cloud Sysbench パフォーマンス テスト レポート
このドキュメントでは、TiDBバージョン8.5.0を搭載したTiDB Cloud DedicatedクラスタのSysbenchパフォーマンステストの手順と結果について説明します。このレポートは、TiDB Self-Managedバージョン8.5.0クラスタのパフォーマンスの参考資料としてもご利用いただけます。
テストの概要
このテストの目的は、オンライン トランザクション処理 (OLTP) シナリオにおける TiDB v8.5.0 の Sysbench パフォーマンスを示すことです。
テスト環境
TiDB クラスター
テストは、次の設定で TiDB クラスターで実行されます。
クラスタタイプ: TiDB Cloud専用
クラスタバージョン: v8.5.0
クラウドプロバイダー: AWS (us-west-2)
クラスタ構成:
ノードタイプ ノードサイズ ノード数 ノードstorage TiDB 16 vCPU、32 GiB 2 該当なし TiKV 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_non_index
oltp_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=10000000Sysbenchのパフォーマンステストを異なるワークロードで実行するには、以下のコマンドを実行します。このドキュメントでは、
oltp_point_select
、oltp_read_write
、oltp_update_non_index
、oltp_update_index
、oltp_insert
のsysbench run
つのワークロードでテストを実施します。各ワークロードについて、${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.5.0 の Sysbench パフォーマンスを紹介します。
ポイントセレクトパフォーマンス
oltp_point_select
ワークロードのパフォーマンスは次のとおりです。
スレッド | TPS | 95%レイテンシー(ミリ秒) |
---|---|---|
50 | 32,733 | 1.94 |
100 | 62,123 | 2.04 |
200 | 107,795 | 2.56 |
読み書きパフォーマンス
oltp_read_write
ワークロードのパフォーマンスは次のとおりです。
スレッド | TPS | 95%レイテンシー(ミリ秒) |
---|---|---|
50 | 1,258 | 45.8 |
100 | 2,243 | 52 |
200 | 3,187 | 94.7 |
インデックス以外のパフォーマンスの更新
oltp_update_non_index
ワークロードのパフォーマンスは次のとおりです。
スレッド | TPS | 95%レイテンシー(ミリ秒) |
---|---|---|
100 | 12,969 | 10.10 |
200 | 23,265 | 11.2 |
400 | 39,547 | 13.2 |
インデックスのパフォーマンスを更新する
oltp_update_index
ワークロードのパフォーマンスは次のとおりです。
スレッド | TPS | 95%レイテンシー(ミリ秒) |
---|---|---|
100 | 11,678 | 11.0 |
200 | 17,685 | 14.8 |
400 | 25,369 | 20.4 |
挿入パフォーマンス
oltp_insert
ワークロードのパフォーマンスは次のとおりです。
スレッド | TPS | 95%レイテンシー(ミリ秒) |
---|---|---|
100 | 18,409 | 7.28 |
200 | 30,943 | 8.28 |
400 | 48,621 | 11.2 |