TiUPベンチコンポーネントを使用した TiDB のストレステスト

データベースのパフォーマンスをテストする場合、データベースのストレス テストが必要になることがよくあります。これを容易にするために、 TiUP には、ストレス テスト用の複数のワークロードを提供するベンチコンポーネントが統合されています。これらのワークロードには、次のコマンドでアクセスできます。

tiup bench tpcc # Benchmark a database using TPC-C tiup bench tpch # Benchmark a database using TPC-H tiup bench ch # Benchmark a database using CH-benCHmark tiup bench ycsb # Benchmark a database using YCSB tiup bench rawsql # Benchmark a database using arbitrary SQL files

tpcctpchch 、およびrawsql 、次の共通コマンド フラグを共有します。ただし、 ycsb主に.propertiesファイルによって構成され、その使用ガイドで説明されます。

-t, --acThreads int OLAP client concurrency, only for CH-benCHmark (default to 1) --conn-params string Session variables, such as setting `--conn-params tidb_isolation_read_engines='tiflash'` for TiDB queries and setting `--conn-params sslmode=disable` for PostgreSQL connections --count int Total execution count (0 means infinite count) -D, --db string Database name (default to "test") -d, --driver string Database driver: mysql, postgres (default to "mysql") --dropdata Clean up historical data before preparing -H, --host strings Database host (default to [127.0.0.1]) --ignore-error Ignore errors when running workload --interval duration Output interval time (default to 10s) --isolation int Isolation Level (0: Default; 1: ReadUncommitted; 2: ReadCommitted; 3: WriteCommitted; 4: RepeatableRead; 5: Snapshot; 6: Serializable; 7: Linerizable) --max-procs int runtime.GOMAXPROCS of golang, the limits of how many cores can be used --output string Output style. Valid values can be { plain | table | json } (default to "plain") -p, --password string Database password -P, --port ints Database port (default to [4000]) --pprof string Address of pprof endpoint --silence Don't print errors when running workload -S, --statusPort int Database status port (default to 10080) -T, --threads int Thread concurrency (default to 1) --time duration Total execution time (default to 2562047h47m16.854775807s) -U, --user string Database user (default to "root")
  • --host--portにコンマ区切りの値を渡すと、クライアント側の負荷分散が有効になります。たとえば、 --host 172.16.4.1,172.16.4.2 --port 4000,4001指定すると、プログラムはラウンドロビン方式で選択された 172.16.4.1:4000、172.16.4.1:4001、172.16.4.2:4000、および 172.16.4.2:4001 に接続します。
  • --conn-params クエリ文字列の形式に従う必要があります。データベースによってパラメータが異なる場合があります。例:
    • --conn-params tidb_isolation_read_engines='tiflash' TiDB にTiFlashからの読み取りを強制します。
    • --conn-params sslmode=disable PostgreSQL に接続するときに SSL を無効にします。
  • CH-benCHmark を実行する場合、 --ap-host--ap-port 、および--ap-conn-params使用して、OLAP クエリ用のスタンドアロン TiDBサーバーを指定できます。

次のセクションでは、 TiUPを使用して TPC-C、TPC-H、YCSB テストを実行する方法について説明します。

TiUPを使用してTPC-Cテストを実行する

TiUPベンチコンポーネントは、 TPC-C テストを実行するために次のコマンドとフラグをサポートしています。

Available Commands: check Check data consistency for the workload cleanup Cleanup data for the workload prepare Prepare data for the workload run Run workload Flags: --check-all Run all consistency checks -h, --help Help for TPC-C --partition-type int Partition type: 1 - HASH, 2 - RANGE, 3 - LIST (HASH-like), 4 - LIST (RANGE-like) (default to 1) --parts int Number of partitions (default to 1) --warehouses int Number of warehouses (default to 10)

テスト手順

以下に、TPC-C テストを実行するための簡略化された手順を示します。詳細な手順については、 TiDB で TPC-C テストを実行する方法参照してください。

  1. ハッシュを使用して 4 つのパーティションを使用して 4 つのウェアハウスを作成します。

    tiup bench tpcc --warehouses 4 --parts 4 prepare
  2. TPC-C テストを実行します。

    tiup bench tpcc --warehouses 4 --time 10m run
  3. 一貫性を確認します:

    tiup bench tpcc --warehouses 4 check
  4. データをクリーンアップします:

    tiup bench tpcc --warehouses 4 cleanup

大規模なデータセットでベンチマークを実行する場合、SQL 経由でデータを準備すると時間がかかることがあります。その場合は、次のコマンドで CSV 形式のデータを生成し、 TiDB Lightning経由で TiDB にインポートできます。

  • CSV ファイルを生成します。

    tiup bench tpcc --warehouses 4 prepare --output-dir data --output-type=csv
  • 指定されたテーブルの CSV ファイルを生成します。

    tiup bench tpcc --warehouses 4 prepare --output-dir data --output-type=csv --tables history,orders

TiUPを使用してTPC-Hテストを実行する

TiUPベンチコンポーネントは、 TPC-H テストを実行するために次のコマンドとパラメーターをサポートしています。

Available Commands: cleanup Cleanup data for the workload prepare Prepare data for the workload run Run workload Flags: --check Check output data, only when the scale factor equals 1 -h, --help help for tpch --queries string All queries (default "q1,q2,q3,q4,q5,q6,q7,q8,q9,q10,q11,q12,q13,q14,q15,q16,q17,q18,q19,q20,q21,q22") --sf int scale factor

テスト手順

  1. データを準備します:

    tiup bench tpch --sf=1 prepare
  2. 統計を収集する:

    OLAP シナリオでは、TiDB オプティマイザーが最適な実行プランを生成できるようにするため、事前に次の SQL ステートメントを実行して統計を収集します。tidb_analyze_column_options tidb_analyze_column_options ALLに設定してください。そうしないと、統計を収集するとクエリ パフォーマンスが大幅に低下する可能性があります。

    set global tidb_analyze_column_options='ALL';
  3. 次のいずれかのコマンドを実行して、TPC-H テストを実行します。

    • 結果を確認する場合は、次のコマンドを実行します。

      tiup bench tpch --count=22 --sf=1 --check=true run
    • 結果を確認しない場合は、次のコマンドを実行します。

      tiup bench tpch --count=22 --sf=1 run
  4. データをクリーンアップします:

    tiup bench tpch cleanup

TiUPを使用してYCSBテストを実行する

YCSB を介して TiDB と TiKV の両方をストレス テストできます。

ストレステストTiDB

  1. データを準備します:

    tiup bench ycsb load tidb -p tidb.instances="127.0.0.1:4000" -p recordcount=10000
  2. YCSB ワークロードを実行します。

    # The read-write percent is 95% by default tiup bench ycsb run tidb -p tidb.instances="127.0.0.1:4000" -p operationcount=10000

ストレステスト TiKV

  1. データを準備します:

    tiup bench ycsb load tikv -p tikv.pd="127.0.0.1:2379" -p recordcount=10000
  2. YCSB ワークロードを実行します。

    # The read-write percent is 95% by default tiup bench ycsb run tikv -p tikv.pd="127.0.0.1:2379" -p operationcount=10000

TiUPを使用してRawSQLテストを実行する

SQL ファイルに任意のクエリを記述し、次のようにtiup bench rawsql実行してテストに使用することができます。

  1. データとクエリを準備します。

    -- Prepare data CREATE TABLE t (a int); INSERT INTO t VALUES (1), (2), (3); -- Save your query in a SQL file. For example, you can save the following query in `demo.sql`. SELECT a, sleep(rand()) FROM t WHERE a < 4*rand();
  2. RawSQL テストを実行します。

    tiup bench rawsql run --count 60 --query-files demo.sql

このページは役に立ちましたか?