ホームページ  >  記事  >  データベース  >  MySQL ベンチマーク テストと sysbench ツールの詳細な説明

MySQL ベンチマーク テストと sysbench ツールの詳細な説明

coldplay.xixi
coldplay.xixi転載
2020-09-11 17:30:422604ブラウズ

MySQL ベンチマーク テストと sysbench ツールの詳細な説明

#関連する学習に関する推奨事項:

mysql チュートリアル

##ベンチマーク テストとは

## データベース ベンチマーク テストは、データベース パフォーマンス指標の定量的で再現性のある比較可能なテストです。ベンチマーク テストとストレス テスト ベンチマーク テストは、システムのストレス テストとして理解できます。しかし、ベンチマーク テストはビジネス ロジックを考慮せず、よりシンプルで直接的で、テストが容易です。データはツールによって生成でき、実際のデータは必要ありません。一方、ストレス テストでは一般にビジネス ロジック (ショッピング カート ビジネスなど) と実際のデータが必要です。

ベンチマーク テストの役割 ほとんどの Web アプリケーションでは、システム全体のボトルネックはデータベースです。理由は簡単です。ネットワーク帯域幅、負荷分散ノード、アプリケーション サーバー (CPU、メモリ、ハードディスク ライト、接続数を含む) などの Web アプリケーションの他の要素です。 、など)、キャッシュなど。水平拡張(一般にマシンの追加と呼ばれます)によってパフォーマンスの向上を実現するのは簡単です。 MySQL の場合、データの一貫性要件のため、マシンを追加してもデータベースへのデータ書き込みのプレッシャーを分散することはできませんが、事前キャッシュ (Redis など)、読み取りと書き込みの分離、およびサブただし、システムの他のコンポーネントの水平方向の拡張と比較すると、制限が多すぎます。

データベース ベンチマーク テストの役割は、現在の構成 (ハードウェア構成、OS、データベース設定などを含む) でのデータベースのパフォーマンスを分析し、それによって MySQL のパフォーマンスのしきい値を見つけ、実際のシステム要件に応じて構成を調整することです。 。

ベンチマーク指標

## 一般的なデータベース インジケーターは次のとおりです: TPS/QPS: スループットを測定します。応答時間: 平均応答時間、最小応答時間、最大応答時間、時間パーセンテージなどを含みます。時間パーセンテージの参照は、リクエストの最初の 95% の最大応答時間など、より重要です。 。同時実行性: 同時に処理されるクエリ リクエストの数。

ベンチマーク テストの分類

MySQL のベンチマークには 2 つのアイデアがあります。

システム全体のベンチマーク テスト: ブラウザ、APP、またはポストマンやその他のテスト ツールなどの http リクエストによるテスト。このソリューションの利点は、システム全体をより適切に対象にでき、テスト結果がより正確になることですが、欠点は、設計が複雑で実装が難しいことです。

  • MySQL のみのベンチマーク テスト: システム全体のテストとは、長所と短所がまったく逆になります。
  • MySQL のベンチマークを行う場合は、通常、mysqlslap、sysbench などの特別なツールが使用されます。その中でも、sysbench は mysqlslap よりも多用途かつ強力であり、(多くの Innodb IO 機能をシミュレートするため) Innodb により適しています。以下では、ベンチマーク テストに sysbench を使用する方法について説明します。

    sysbench の紹介

    sysbench は、マルチスレッドと複数のデータベースをサポートするクロスプラットフォームのベンチマーク テスト ツールで、主に次のテストが含まれます:

    1. CPU性能 2. ディスクIO性能 3. スケジューラ性能 4. メモリ割り当てと通信速度 5. POSIXスレッド性能 6. データベース性能(OLTPベンチマークテスト) 7. この記事では主にデータベース性能のテストを紹介します。

    sysbench のインストール

    この記事で使用する環境は CentOS 6.5 ですが、他の Linux システムでもインストール方法は同様です。 MySQLのバージョンは5.6です。

    1.下载解压
    wget https://github.com/akopytov/sysbench/archive/1.0.zip -O "sysbench-1.0.zip"
    unzip sysbench-1.0.zip
    cd sysbench-1.0
    
    2.安装依赖
    yum install automake libtool –y
    
    3.安装 安装之前,确保位于之前解压的sysbench目录中。
    ./autogen.sh
    ./configure
    export LD_LIBRARY_PATH=/usr/local/mysql/include 
    #这里换成机器中mysql路径下的include
    make
    make install
    
    4.安装成功
    [[email protected] sysbench-1.0]# sysbench --version
    sysbench 1.0.9

    sysbench 構文

    sysbench –help を実行すると、sysbench の詳細な使用法が表示されます。 sysbench の基本的な構文は次のとおりです:

    sysbench [options]... [testname] [command]

    実際に使用する際によく使用されるパラメータやコマンドについて説明します。

    1.command コマンドは、sysbench によって実行されるコマンドで、prepare、run、cleanup が含まれます。名前が示すように、prepare はテスト用に事前にデータを準備すること、run はテスト用にデータを準備することです。正式なテストを実行し、クリーンアップはテスト完了後にデータベースをクリーンアップします。

    2.testname testname は、実行するテストを指定します。sysbench の古いバージョンでは、--test パラメータを使用してテスト スクリプトを指定できますが、新しいバージョンでは、-- test パラメータは廃止されていると宣言されました。--test を使用せずにスクリプトを直接指定できます。

    たとえば、次の 2 つのメソッドは同じ効果があります:

    sysbench --test=./tests/include/oltp_legacy/oltp.lua
    sysbench ./tests/include/oltp_legacy/oltp.lua

    テスト中に使用されるスクリプトは Lua スクリプトであり、sysbench に付属のスクリプトを使用することも、独自に開発することもできます。ほとんどのアプリケーションでは、sysbench に付属のスクリプトを使用するだけで十分です。 sysbench のバージョンが異なると、lua スクリプトの場所が異なる場合があります。sysbench パスで find コマンドを使用して、oltp.lua を検索できます。追記: ほとんどのデータ サービスは oltp タイプですが、oltp が何なのかを理解していない場合は、データ サービスが oltp タイプである可能性が高くなります。

    3.options sysbench には多くのパラメータがあり、より一般的に使用されるパラメータは次のとおりです。 MySQL 接続情報パラメータ:

    1.--mysql-host: MySQL サーバーのホスト名、デフォルトは localhost です。ローカル マシンで localhost を使用し、MySQL サーバーに接続できないことを示すエラーが報告された場合は、ローカル マシンの IP アドレスを変更する必要があります。十分。 2.--mysql-port: MySQL サーバー ポート、デフォルトは 33063。--mysql-user: ユーザー名 4.--mysql-password: パスワード

    MySQL 実行パラメータ:

        1.--oltp-test-mode:执行模式,包括simple、nontrx和complex,默认是complex。simple模式下只测试简单的查询;nontrx不仅测试查询,还测试插入更新等,但是不使用事务;complex模式下测试最全面,会测试增删改查,而且会使用事务。可以根据自己的需要选择测试模式。2.--oltp-tables-count:测试的表数量,根据实际情况选择3.--oltp-table-size:测试的表的大小,根据实际情况选择4.--threads:客户端的并发连接数5.--time:测试执行的时间,单位是秒,该值不要太短,可以选择1206.--report-interval:生成报告的时间间隔,单位是秒,如10

       sysbench使用举例

        在执行sysbench时,应该注意:

        1.尽量不要在MySQL服务器运行的机器上进行测试,一方面可能无法体现网络(哪怕是局域网)的影响,另一方面,sysbench的运行(尤其是设置的并发数较高时)会影响MySQL服务器的表现。2.可以逐步增加客户端的并发连接数(--thread参数),观察在连接数不同情况下,MySQL服务器的表现;如分别设置为10,20,50,100等。3.一般执行模式选择complex即可,如果需要特别测试服务器只读性能,或不使用事务时的性能,可以选择simple模式或nontrx模式。4.如果连续进行多次测试,注意确保之前测试的数据已经被清理干净。

       下面是sysbench使用的一个例子:

       1.准备数据

    sysbench ./tests/include/oltp_legacy/oltp.lua --mysql-host=192.168.10.10 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --oltp-test-mode=complex --oltp-tables-count=10 --oltp-table-size=100000 --threads=10 --time=120 --report-interval=10 prepare

        其中,执行模式为complex,使用了10个表,每个表有10万条数据,客户端的并发线程数为10,执行时间为120秒,每10秒生成一次报告。 

       2.执行测试 将测试结果导出到文件中,便于后续分析。

    sysbench ./tests/include/oltp_legacy/oltp.lua --mysql-host=192.168.10.10 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --oltp-test-mode=complex --oltp-tables-count=10 --oltp-table-size=100000 --threads=10 --time=120 --report-interval=10 run >> /home/test/mysysbench.log

       3.清理数据 执行完测试后,清理数据,否则后面的测试会受到影响。

    sysbench ./tests/include/oltp_legacy/oltp.lua --mysql-host=192.168.10.10 --mysql-port=3306 --mysql-user=root --mysql-password=123456 cleanup

       测试结果

        测试结束后,查看输出文件,如下所示:   

    その中で、私たちにとってより重要な情報は次のとおりです。 クエリ: クエリの合計数、qps トランザクション: トランザクションの合計数と tps レイテンシ - 95 パーセンタイル: リクエストの最初の 95% の最大応答時間 (この場合はは 344 ミリ秒です。この遅延は非常に大きく、使用している MySQL サーバーのパフォーマンスが非常に悪いため、この値は正式な環境では絶対に受け入れられません。 ###### ######提案############ sysbench の使用に関するいくつかの提案を次に示します。

    1. テストを開始する前に、システム全体のベンチマーク テストを使用するのか、MySQL のベンチマーク テストを使用するのか、あるいはその両方を使用するのかを明確にする必要があります。 2. MySQL のベンチマーク テストが必要な場合は、精度要件も明確にする必要があります: 運用環境から実際のデータを使用する必要があるか、それともデータを生成するツールを使用する必要があるか; 前者の方が面倒です。実装する。実際のデータを使用する場合は、データの一部ではなくすべてのデータを使用するようにしてください。

    3. ベンチマーク テストを意味のあるものにするためには、複数回実施する必要があります。

    4. テストの際は、マスターとスレーブの同期状態に注意する必要があります。

    5. テストではマルチスレッド状況をシミュレートする必要があります。シングルスレッド状況では実際の効率をシミュレートできないだけでなく、ブロッキングやデッドロック状況さえもシミュレートできません。 プログラミングについてさらに詳しく知りたい場合は、php training 列に注目してください。

以上がMySQL ベンチマーク テストと sysbench ツールの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はphpxs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。