TiDB Sysbench パフォーマンス テスト レポート -- v3.0 対 v2.1

テストの目的

このテストは、OLTP シナリオで TiDB 3.0 と TiDB 2.1 のパフォーマンスを比較することを目的としています。

テストバージョン、時間、場所

TiDB バージョン: v3.0.0 対 v2.1.13

時期:2019年6月

場所: 北京

テスト環境

このテストは AWS EC2 で実行され、CentOS-7.6.1810-Nitro (ami-028946f4cffc8b916) イメージを使用します。インスタンスのコンポーネントとタイプは次のとおりです。

成分インスタンスタイプ
PDr5d.xlarge
TiKVc5d.4xlarge
TiDBc5.4xlarge

シスベンチのバージョン: 1.0.17

テスト計画

Sysbench を使用して、各テーブルに 10,000,000 行の 16 個のテーブルをインポートします。 3 つの sysbench を開始して、3 つの TiDB インスタンスに圧力をかけます。同時リクエストの数は段階的に増加します。 1 つの同時テストは 5 分間続きます。

次のコマンドを使用してデータを準備します。

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

次に、次のコマンドを使用して TiDB をテストします。

sysbench $testname \ --threads=$threads \ --time=300 \ --report-interval=15 \ --rand-type=uniform \ --rand-seed=$RANDOM \ --db-driver=mysql \ --mysql-db=sbtest \ --mysql-host=$tidb_host \ --mysql-port=$tidb_port \ --mysql-user=root \ --mysql-password=password \ run --tables=16 --table-size=10000000

TiDB のバージョン情報

v3.0.0

成分Gitハッシュ
TiDB8efbe62313e2c1c42fd76d35c6f020087eef22c2
TiKVa467f410d235fa9c5b3c355e3b620f81d3ac0e0c
PD70aaa5eee830e21068f1ba2d4c9bae59153e5ca3

v2.1.13

成分Gitハッシュ
TiDB6b5b1a6802f9b8f5a22d8aab24ac80729331e1bc
TiKVb3cf3c8d642534ea6fa93d475a46da285cc6acbf
PD886362ebfb26ef0834935afc57bcee8a39c88e54

TiDB パラメーター構成

TiDB v2.1 と v3.0 の両方で準備済みプラン キャッシュを有効にします (最適化のため、 point selectread writeは v2.1 では有効になっていません)。

[prepared-plan-cache] enabled = true

次に、グローバル変数を構成します。

set global tidb_hashagg_final_concurrency=1;
set global tidb_hashagg_partial_concurrency=1;
set global tidb_disable_txn_auto_retry=0;

さらに、v3.0 で次の構成を行います。

[tikv-client] max-batch-wait-time = 2000000

TiKV パラメータ設定

TiDB v2.1 と v3.0 の両方でグローバル変数を構成します。

log-level = "error" [readpool.storage] normal-concurrency = 10 [server] grpc-concurrency = 6 [rocksdb.defaultcf] block-cache-size = "14GB" [rocksdb.writecf] block-cache-size = "8GB" [rocksdb.lockcf] block-cache-size = "1GB"

さらに、v3.0 で次の構成を行います。

[raftstore] apply-pool-size = 3 store-pool-size = 3

クラスタトポロジ

マシン IP展開インスタンス
172.31.8.83 *シスベンチ
172.31.7.80、172.31.5.163、172.31.11.123PD
172.31.4.172、172.31.1.155、172.31.9.210TiKV
172.31.7.80、172.31.5.163、172.31.11.123TiDB

テスト結果

Point Selectテスト

v2.1:

スレッドQPS95%のレイテンシー(ミリ秒)
150240304.061.61
300276635.752.97
600307838.065.18
900323667.937.30
1200330925.739.39
1500336250.3811.65

v3.0:

スレッドQPS95%のレイテンシー(ミリ秒)
150334219.040.64
300456444.861.10
600512177.482.11
900525945.133.13
1200534577.364.18
1500533944.645.28

point select

Update Non-Index

v2.1:

スレッドQPS95%のレイテンシー(ミリ秒)
15021785.378.58
30028979.2713.70
60034629.7224.83
90036410.0643.39
120037174.1562.19
150037408.8887.56

v3.0:

スレッドQPS95%のレイテンシー(ミリ秒)
15028045.756.67
30039237.779.91
60049536.5616.71
90055963.7322.69
120059904.0229.72
150062247.9542.61

update non-index

Update Indexテスト

v2.1:

スレッドQPS95%のレイテンシー(ミリ秒)
15014378.2413.22
30016916.4324.38
60017636.1157.87
90017740.9295.81
120017929.24130.13
150018012.80161.51

v3.0:

スレッドQPS95%のレイテンシー(ミリ秒)
15019047.3210.09
30024467.6416.71
60028882.6631.94
90030298.4157.87
120030419.4092.42
150030643.55125.52

update index

Read Writeテスト

v2.1:

スレッドQPS95%のレイテンシー(ミリ秒)
15085140.6044.98
30096773.0182.96
600105139.81153.02
900110041.83215.44
1200113242.70277.21
1500114542.19337.94

v3.0:

スレッドQPS95%のレイテンシー(ミリ秒)
150105692.0835.59
300129769.6958.92
600141430.86114.72
900144371.76170.48
1200143344.37223.34
1500144567.91277.21

read write