ホームページ >データベース >mysql チュートリアル >MySQL ベンチマーク テストと sysbench ツールの詳細な説明
#関連する学習に関する推奨事項:##ベンチマーク テストとは
## データベース ベンチマーク テストは、データベース パフォーマンス指標の定量的で再現性のある比較可能なテストです。ベンチマーク テストとストレス テスト ベンチマーク テストは、システムのストレス テストとして理解できます。しかし、ベンチマーク テストはビジネス ロジックを考慮せず、よりシンプルで直接的で、テストが容易です。データはツールによって生成でき、実際のデータは必要ありません。一方、ストレス テストでは一般にビジネス ロジック (ショッピング カート ビジネスなど) と実際のデータが必要です。
ベンチマーク テストの分類
システム全体のベンチマーク テスト: ブラウザ、APP、またはポストマンやその他のテスト ツールなどの http リクエストによるテスト。このソリューションの利点は、システム全体をより適切に対象にでき、テスト結果がより正確になることですが、欠点は、設計が複雑で実装が難しいことです。
sysbench は、マルチスレッドと複数のデータベースをサポートするクロスプラットフォームのベンチマーク テスト ツールで、主に次のテストが含まれます:
1. CPU性能 2. ディスクIO性能 3. スケジューラ性能 4. メモリ割り当てと通信速度 5. POSIXスレッド性能 6. データベース性能(OLTPベンチマークテスト) 7. この記事では主にデータベース性能のテストを紹介します。
この記事で使用する環境は 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 –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时,应该注意:
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 の使用に関するいくつかの提案を次に示します。
5. テストではマルチスレッド状況をシミュレートする必要があります。シングルスレッド状況では実際の効率をシミュレートできないだけでなく、ブロッキングやデッドロック状況さえもシミュレートできません。 プログラミングについてさらに詳しく知りたい場合は、php training 列に注目してください。
以上がMySQL ベンチマーク テストと sysbench ツールの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。