TiDB Sysbench パフォーマンス テスト レポート -- v6.2.0 対 v6.1.0

テストの概要

このテストは、オンライン トランザクション処理 (OLTP) シナリオで TiDB v6.2.0 と TiDB v6.1.0 の Sysbench パフォーマンスを比較することを目的としています。結果は、v6.2.0 のパフォーマンスが v6.1.0 のパフォーマンスと基本的に同じであることを示しています。 Point Select のパフォーマンスは 3.58% わずかに低下します。

テスト環境(AWS EC2)

ハードウェア構成

サービスの種類EC2タイプインスタンス数
PDm5.xlarge3
TiKVi3.4xlarge3
TiDBc5.4xlarge3
シスベンチc5.9xlarge1

ソフトウェアバージョン

サービスの種類ソフトウェアバージョン
PDv6.1.0 および v6.2.0
TiDBv6.1.0 および v6.2.0
TiKVv6.1.0 および v6.2.0
シスベンチ1.1.0-df89d34

パラメータ構成

TiDB v6.2.0 と TiDB v6.1.0 は同じ構成を使用します。

TiDB パラメーター構成

log.level: "error"
prepared-plan-cache.enabled: true
tikv-client.max-batch-wait-time: 2000000

TiKV パラメータ設定

storage.scheduler-worker-pool-size: 5
raftstore.store-pool-size: 3
raftstore.apply-pool-size: 3
rocksdb.max-background-jobs: 8
server.grpc-concurrency: 6
readpool.unified.max-thread-count: 10

TiDB グローバル変数の構成

set global tidb_hashagg_final_concurrency=1;
set global tidb_hashagg_partial_concurrency=1;
set global tidb_enable_async_commit = 1;
set global tidb_enable_1pc = 1;
set global tidb_guarantee_linearizability = 0;
set global tidb_enable_clustered_index = 1;
set global tidb_prepared_plan_cache_size=1000;

HAProxy 構成 - haproxy.cfg

TiDB で HAProxy を使用する方法の詳細については、 TiDB で HAProxy を使用するためのベスト プラクティスを参照してください。

global                                     # Global configuration.
   pidfile     /var/run/haproxy.pid        # Writes the PIDs of HAProxy processes into this file.
   maxconn     4000                        # The maximum number of concurrent connections for a single HAProxy process.
   user        haproxy                     # The same with the UID parameter.
   group       haproxy                     # The same with the GID parameter. A dedicated user group is recommended.
   nbproc      64                          # The number of processes created when going daemon. When starting multiple processes to forward requests, ensure that the value is large enough so that HAProxy does not block processes.
   daemon                                  # Makes the process fork into background. It is equivalent to the command line "-D" argument. It can be disabled by the command line "-db" argument.

defaults                                   # Default configuration.
   log global                              # Inherits the settings of the global configuration.
   retries 2                               # The maximum number of retries to connect to an upstream server. If the number of connection attempts exceeds the value, the backend server is considered unavailable.
   timeout connect  2s                     # The maximum time to wait for a connection attempt to a backend server to succeed. It should be set to a shorter time if the server is located on the same LAN as HAProxy.
   timeout client 30000s                   # The maximum inactivity time on the client side.
   timeout server 30000s                   # The maximum inactivity time on the server side.

listen tidb-cluster                        # Database load balancing.
   bind 0.0.0.0:3390                       # The Floating IP address and listening port.
   mode tcp                                # HAProxy uses layer 4, the transport layer.
   balance leastconn                      # The server with the fewest connections receives the connection. "leastconn" is recommended where long sessions are expected, such as LDAP, SQL and TSE, rather than protocols using short sessions, such as HTTP. The algorithm is dynamic, which means that server weights might be adjusted on the fly for slow starts for instance.
   server tidb-1 10.9.18.229:4000 check inter 2000 rise 2 fall 3       # Detects port 4000 at a frequency of once every 2000 milliseconds. If it is detected as successful twice, the server is considered available; if it is detected as failed three times, the server is considered unavailable.
   server tidb-2 10.9.39.208:4000 check inter 2000 rise 2 fall 3
   server tidb-3 10.9.64.166:4000 check inter 2000 rise 2 fall 3

テスト計画

  1. TiUP を使用して TiDB v6.2.0 および v6.1.0 をデプロイします。
  2. Sysbench を使用して、各テーブルに 1,000 万行のデータがある 16 個のテーブルをインポートします。
  3. 各テーブルでanalyze tableのステートメントを実行します。
  4. 異なる同時実行テストの前に、復元に使用されるデータをバックアップします。これにより、各テストのデータの一貫性が保証されます。
  5. Sysbench クライアントを起動して、 point_selectread_writeupdate_index 、およびupdate_non_indexのテストを実行します。 HAProxy を介して TiDB でストレス テストを実行します。各ワークロードでの同時実行ごとに、テストに 20 分かかります。
  6. 各タイプのテストが完了したら、クラスターを停止し、手順 4 のバックアップ データでクラスタを上書きし、クラスタを再起動しクラスタ。

テストデータの準備

次のコマンドを実行して、テスト データを準備します。

sysbench oltp_common \
    --threads=16 \
    --rand-type=uniform \
    --db-driver=mysql \
    --mysql-db=sbtest \
    --mysql-host=$aws_nlb_host \
    --mysql-port=$aws_nlb_port \
    --mysql-user=root \
    --mysql-password=password \
    prepare --tables=16 --table-size=10000000

テストを実行する

次のコマンドを実行して、テストを実行します。

sysbench $testname \
    --threads=$threads \
    --time=1200 \
    --report-interval=1 \
    --rand-type=uniform \
    --db-driver=mysql \
    --mysql-db=sbtest \
    --mysql-host=$aws_nlb_host \
    --mysql-port=$aws_nlb_port \
    run --tables=16 --table-size=10000000

試験結果

ポイントセレクト性能

スレッドv6.1.0 TPSv6.2.0 TPSv6.1.0 95% レイテンシー (ミリ秒)v6.2.0 95% レイテンシー (ミリ秒)TPS の改善 (%)
300243530.01236885.241.932.07-2.73
600304121.47291395.843.684.03-4.18
900327301.23314720.0255.47-3.84

v6.1.0 と比較すると、v6.2.0 の Point Select のパフォーマンスは 3.58% わずかに低下します。

Point Select

インデックス以外のパフォーマンスを更新

スレッドv6.1.0 TPSv6.2.0 TPSv6.1.0 95% レイテンシー (ミリ秒)v6.2.0 95% レイテンシー (ミリ秒)TPS の改善 (%)
30042608.842372.8211.4511.24-0.55
60054264.4753672.6918.9518.95-1.09
90060667.4760116.1426.226.68-0.91

v6.1.0 と比較すると、v6.2.0 の Update Non-index のパフォーマンスは基本的に変わらず、0.85% 低下しています。

Update Non-index

インデックスのパフォーマンスを更新する

スレッドv6.1.0 TPSv6.2.0 TPSv6.1.0 95% レイテンシー (ミリ秒)v6.2.0 95% レイテンシー (ミリ秒)TPS の改善 (%)
30019384.7519353.5823.5223.52-0.16
60024144.7824007.5738.2537.56-0.57
90026770.926589.8451.9452.89-0.68

v6.1.0 と比較すると、v6.2.0 の Update Index のパフォーマンスは基本的に変わらず、0.47% 低下しています。

Update Index

読み書き性能

スレッドv6.1.0 TPSv6.2.0 TPSv6.1.0 95% レイテンシー (ミリ秒)v6.2.0 95% レイテンシー (ミリ秒)TPS の改善 (%)
3004849.674797.598684.47-1.07
6005643.895565.17161.51161.51-1.39
9005954.915885.22235.74235.74-1.17

v6.1.0 と比較すると、v6.2.0 の読み書きパフォーマンスは 1.21% 低下しています。

Read Write

エコシステム
TiDB
TiKV
TiSpark
Chaos Mesh
© 2022 PingCAP. All Rights Reserved.