Sysbench の MySQL ベンチマーク プロセスの分析

Sysbench の MySQL ベンチマーク プロセスの分析

序文

1.ベンチマークは、テスト オブジェクトのクラスの特定のパフォーマンス指標の定量的、再現可能、比較可能なテストを重視するパフォーマンス テストの一種です。

さらに理解を深めるために、ベンチマークとは、特定の時点でのベンチマークを通じて既知のパフォーマンス レベル (ベースラインと呼ばれる) を確立することです。システムのハードウェアおよびソフトウェア環境が変更されると、ベンチマークが再度実行され、それらの変更がパフォーマンスに与える影響が判断されます。これは、ベンチマークの最も一般的な用途でもあります。その他の用途としては、特定の負荷レベルでのパフォーマンス制限の決定、システムまたは環境の変更の管理、パフォーマンスの問題につながる可能性のある条件の特定などが挙げられます。

2. ベンチマークの役割:

ほとんどの Web アプリケーションでは、システムのボトルネックはデータベース側で簡単に発生します。その理由は単純です。ネットワーク帯域幅、負荷分散ノード、アプリケーション サーバー (CPU、メモリ、ハード ディスクの明るさ、接続数などを含む)、キャッシュなど、Web アプリケーション内の他の要素は、水平拡張 (一般にマシンの追加と呼ばれる) によって簡単にパフォーマンスの向上を実現できます。 MySQL などのデータベースの場合、データの一貫性が求められるため、マシンを追加することでデータベースへのデータ書き込みの負荷を分散することはできません。フロントエンド キャッシュ (Redis など)、読み取りと書き込みの分離、ライブラリとテーブルのシャーディングによって負荷を軽減することはできますが、システムの他のコンポーネントの水平拡張と比較すると、制約が多すぎます。
データベース ベンチマークの目的は、現在の構成 (ハードウェア構成、OS、データベース設定などを含む) でのデータベースのパフォーマンスを分析し、データベースのパフォーマンスしきい値を見つけて、実際のシステム要件に応じて構成を調整することです。さらに、データベース サーバーのベンチマークは、データベース構造の変更前後でパフォーマンスがどのように影響を受けるかを観察するためにもよく使用されます。

3. ベンチマークテストとストレステストの違い:

多くの場合、ベンチマーク テストとストレス テストは実際の使用時に混同されやすくなります。ベンチマーク テストは、システムのストレス テストとして理解できます。ただし、ベンチマーク テストではビジネス ロジックは考慮されず、よりシンプルで直接的であり、テストが簡単です。データはツールによって生成でき、実際のデータである必要はありません。ストレス テストでは通常、ビジネス ロジック (ショッピング カート ビジネスなど) が考慮され、実際のデータが必要です。

4. ベンチマークツール:

SysBench は、さまざまなシステム パラメータの下でデータベースの負荷を評価するために主に使用される、モジュール式のクロスプラットフォーム マルチスレッド ベンチマーク ツールです。主に以下の種類のテストが含まれます。

1. CPUパフォーマンス

2. ディスクIOパフォーマンス

3. スケジューラのパフォーマンス

4. メモリ割り当てと転送速度

5. POSIXスレッドのパフォーマンス

6. データベースパフォーマンス(OLTPベンチマーク)

現在、sysbench は主に MySQL、pgsql、oracle の 3 つのデータベースをサポートしています。

インストール

yum -y sysbenchをインストールします

sysbench --help ##インストールが成功したかどうかを確認します

ご注意:インストール中に依存関係パッケージが不足している場合は、こちらをご覧ください。

データ準備

準備する

データベース sysbench_test を作成します。

show databases; #データベースを確認する

終了 #終了


2. 始めましょう

find / -name oltp*.lua # 後でコマンドを実行するために使用される sysbench 組み込みデータ書き込みスクリプトのパスを検索します

sysbench /usr/share/sysbench/oltp_read_write.lua --tables=5 --table_size=100 --mysql-user=root --mysql-password=xxx --mysql-host=192.168.0.103 --mysql-port=3306 --mysql-db=sysbench_test を準備します
#/usr/share/sysbench/oltp_read_write.lua: 上記のsysbench組み込みの読み取りおよび書き込みスクリプトのパス
#--tables: 生成されるテーブルの数を指定します。ここでは 5 つのテーブルが設定されており、5 つのテスト テーブルが生成されることを示しています。読者は実際のニーズに応じてこの値を調整できます。
#--table_size: 生成されたテーブルで生成されるデータの量を指定します。上記の例では、各テーブルに 100 個のテスト データが生成されることを示しています。実際の値は必要に応じて調整できます。たとえば、1000000 に調整すると、100 万個のテスト データが生成されることを意味します。
#--mysql-db: 接続するテスト データベースの名前。ここでのテストには、上記で作成したデータベースが使用されます。
#--mysql-user: 接続されたデータベースのユーザー名
#--mysql-password: 接続されたデータベースのパスワード
#--mysql-port: 接続されたデータベース開発のポート

実行プロンプトエラー

理由:

インポートされたデータがデータベースのデフォルト値を超えています

解決する:

MySQLがインストールされているサーバーのデータ設定を変更する必要があります

vim /etc/my.cnf

max_allowed_pa​​cket の値を変更します。存在しない場合は、最後に行を追加します。

再度実行して、mysqlクライアント上のデータを確認します

テストを実行する

sysbench /usr/share/sysbench/oltp_read_write.lua --mysql-user=root --mysql-password=xxx --mysql-host=192.168.0.103 --mysql-port=3306 --mysql-db=sysbench_test --tables=5 --table_size=100 --threads=10 --time=30 --report-interval=3 実行
#--threads: スレッドの数を示します
#--time: 実行時間を示します
#--report-interval: テスト情報を出力する間隔を秒単位で指定します
# run: 実行中を示します。その他のパラメータ情報は上記と同じなので、ここでは説明しません。

上記のコマンドは、10 個の同時スレッドが使用され、実行時間は 30 秒で、テスト情報は 3 秒ごとに出力されることを示しています。

その中でも、私たちにとってより重要な情報は次のとおりです。

  • クエリ: クエリの総数と QPS
  • トランザクション: トランザクションの総数とtps
  • レイテンシ - 95 パーセンタイル: 最初の 95% のリクエストの応答時間。

データのクリーニング

テストが完了した後も、最後の仕上げを忘れないでください。データベースに保存された大量のテスト データは、依然として影響を及ぼします。

sysbench /usr/share/sysbench/oltp_read_write.lua --tables=5 --table_size=100 --mysql-user=root --mysql-password=xxx --mysql-host=192.168.0.103 --mysql-port=3306 --mysql-db=sysbench_test クリーンアップ
#ここでのパラメータは、以前に挿入されたデータのパラメータに従って入力され、すべてがクリアされていることを確認します


データを確認する

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • MySQLデータベースはsysbenchに基づくOLTPベンチマークテストを実装します
  • sysbenchツールによるMySQLデータベースのパフォーマンステストの実装方法
  • mysql の sysbench ストレス テストに関する詳細なチュートリアル
  • sysbench を使用して MySQL のパフォーマンスをテストする詳細なチュートリアル
  • sysbench を使用して MySQL のパフォーマンスをテストするチュートリアル
  • MySQL パフォーマンス ストレス ベンチマーク ツール sysbench の使い方の紹介

<<:  Vueは動的ルーティングの詳細を実装します

>>:  DockerでGDBを使用するときにブレークポイントを入力できない問題を解決する

推薦する

Vue2.0は適応解像度を実装する

この記事では、適応解像度を実現するためのVue2.0の具体的なコードを参考までに紹介します。具体的な...

Vue3 の SetUp 関数のプロパティとコンテキスト パラメータの詳細な説明

1. setUp関数の最初のパラメータpropsセットアップ(プロパティ、コンテキスト){}最初のパ...

nginx で SSL 証明書を設定して https サービスを実装する方法

前回の記事では、openssl を使用して無料の証明書を生成した後、この証明書を使用してローカル ノ...

CSS で中空効果を実装するサンプルコード

効果原理主にCSSグラデーションを使用して、切り取りを必要としない背景のくり抜きを実現します。クーポ...

MySql Group Byは複数のフィールドのグループ化を実装します

日常の開発タスクでは、データ テーブル内のグループ化フィールドに基づいて統計データを取得するために、...

CentOS 8 システム FTP サーバーのインストールとパッシブ モードの設定の詳細なチュートリアル

目次1. 基本を理解する2. システム環境を確認する3. ftpコマンドをインストールする[オプショ...

フロントエンドページのポップアップマスクはページのスクロールを禁止します

フロントエンド開発者がよく遭遇する問題は、ユーザーに情報を提示するためのポップアップ ウィンドウを作...

CSS の記述基準と順序を共有する [すべての人に使用を推奨]

CSSの記述順序1. 位置属性(位置、上、右、z-index、表示、フロートなど) 2. サイズ(...

MySQL から Excel にテーブルデータをエクスポートする際の日時形式に関する簡単な説明

最近、MySQL を使用してテーブル データを Excel ファイルにエクスポートしました。MySQ...

MySQL の int(n) の後の n はどういう意味ですか?

int(1) の長さ 1 は、許可されたストレージ幅を表していないことはすでにご存知かもしれません...

Server-U 14バージョンのインストールと使用方法

Server-Uソフトウェアの紹介Server-U は非常に強力なファイル マネージャーです。FTP...

CSS と JavaScript を使用して管理ダッシュボードのレイアウトを構築するためのサンプル コード

あなたが作成するものこの新しいチュートリアルでは、CSS と JavaScript を使用して、レス...

VirtualBox CentOS7.7.1908 Python3.8 ビルド Scrapy 開発環境 [グラフィックチュートリアル]

目次環境CentOSをインストールするyum 国内ミラーソースを構成するサードパーティの依存関係をイ...

MySqlサブクエリINの実装と最適化

目次IN が遅いのはなぜですか? INとEXISTSのどちらが速いでしょうか?効率を向上させるにはど...