TiDBSysbenchパフォーマンステストレポート-v3.0とv2.1
テスト目的
このテストは、OLTPシナリオでのTiDB3.0とTiDB2.1のパフォーマンスを比較することを目的としています。
テストバージョン、時間、場所
TiDBバージョン:v3.0.0とv2.1.13
時間:2019年6月
場所:北京
テスト環境
このテストはAWSEC2で実行され、CentOS-7.6.1810-Nitro(ami-028946f4cffc8b916)イメージを使用します。インスタンスのコンポーネントとタイプは次のとおりです。
成分 | インスタンスタイプ |
---|---|
PD | r5d.xlarge |
TiKV | c5d.4xlarge |
TiDB | c5.4xlarge |
Sysbenchバージョン: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
成分 | GitHash |
---|---|
TiDB | 8efbe62313e2c1c42fd76d35c6f020087eef22c2 |
TiKV | a467f410d235fa9c5b3c355e3b620f81d3ac0e0c |
PD | 70aaa5eee830e21068f1ba2d4c9bae59153e5ca3 |
v2.1.13
成分 | GitHash |
---|---|
TiDB | 6b5b1a6802f9b8f5a22d8aab24ac80729331e1bc |
TiKV | b3cf3c8d642534ea6fa93d475a46da285cc6acbf |
PD | 886362ebfb26ef0834935afc57bcee8a39c88e54 |
TiDBパラメータ設定
TiDB v2.1とv3.0の両方で準備済みプランキャッシュを有効にします(最適化の理由から、v2.1ではpoint select
とread write
は有効になっていません)。
[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パラメータ設定
TiDBv2.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.8 | 3 * Sysbench |
172.31.7.80、172.31.5.163、172.31.11.123 | PD |
172.31.4.172、172.31.1.155、172.31.9.210 | TiKV |
172.31.7.80、172.31.5.163、172.31.11.123 | TiDB |
テスト結果
Point Select
テスト
v2.1:
スレッド | QPS | 95%の遅延(ミリ秒) |
---|---|---|
150 | 240304.06 | 1.61 |
300 | 276635.75 | 2.97 |
600 | 307838.06 | 5.18 |
900 | 323667.93 | 7.30 |
1200 | 330925.73 | 9.39 |
1500 | 336250.38 | 11.65 |
v3.0:
スレッド | QPS | 95%の遅延(ミリ秒) |
---|---|---|
150 | 334219.04 | 0.64 |
300 | 456444.86 | 1.10 |
600 | 512177.48 | 2.11 |
900 | 525945.13 | 3.13 |
1200 | 534577.36 | 4.18 |
1500 | 533944.64 | 5.28 |
Update Non-Index
v2.1:
スレッド | QPS | 95%の遅延(ミリ秒) |
---|---|---|
150 | 21785.37 | 8.58 |
300 | 28979.27 | 13.70 |
600 | 34629.72 | 24.83 |
900 | 36410.06 | 43.39 |
1200 | 37174.15 | 62.19 |
1500 | 37408.88 | 87.56 |
v3.0:
スレッド | QPS | 95%の遅延(ミリ秒) |
---|---|---|
150 | 28045.75 | 6.67 |
300 | 39237.77 | 9.91 |
600 | 49536.56 | 16.71 |
900 | 55963.73 | 22.69 |
1200 | 59904.02 | 29.72 |
1500 | 62247.95 | 42.61 |
Update Index
v2.1:
スレッド | QPS | 95%の遅延(ミリ秒) |
---|---|---|
150 | 14378.24 | 13.22 |
300 | 16916.43 | 24.38 |
600 | 17636.11 | 57.87 |
900 | 17740.92 | 95.81 |
1200 | 17929.24 | 130.13 |
1500 | 18012.80 | 161.51 |
v3.0:
スレッド | QPS | 95%の遅延(ミリ秒) |
---|---|---|
150 | 19047.32 | 10.09 |
300 | 24467.64 | 16.71 |
600 | 28882.66 | 31.94 |
900 | 30298.41 | 57.87 |
1200 | 30419.40 | 92.42 |
1500 | 30643.55 | 125.52 |
Read Write
テスト
v2.1:
スレッド | QPS | 95%の遅延(ミリ秒) |
---|---|---|
150 | 85140.60 | 44.98 |
300 | 96773.01 | 82.96 |
600 | 105139.81 | 153.02 |
900 | 110041.83 | 215.44 |
1200 | 113242.70 | 277.21 |
1500 | 114542.19 | 337.94 |
v3.0:
スレッド | QPS | 95%の遅延(ミリ秒) |
---|---|---|
150 | 105692.08 | 35.59 |
300 | 129769.69 | 58.92 |
600 | 141430.86 | 114.72 |
900 | 144371.76 | 170.48 |
1200 | 143344.37 | 223.34 |
1500 | 144567.91 | 277.21 |