ホームページ >データベース >mysql チュートリアル >MySQL チューニングが Laravel のパフォーマンスを向上させる方法

MySQL チューニングが Laravel のパフォーマンスを向上させる方法

WBOY
WBOYオリジナル
2024-07-29 20:33:03603ブラウズ

MySQL 構成のチューニングは、データベースの専門家や管理者によって実装されるデータベース管理の重要なコンポーネントです。ハードウェアとワークロードに合わせてデータベースを構成することを目的としています。しかし、データベース管理の領域を超えて、MySQL 構成チューニングの有用性はほとんど無視されています。

私たちは、MySQL のチューニングが Web アプリのパフォーマンスに大きな影響を与える可能性があると仮説を立てています。 MySQL チューニングの価値を示すことができれば、企業や組織はこの実践を大規模に導入することに熱心になるかもしれません。

Laravelアプリケーションのパフォーマンスを向上させる方法

チューニングによるアプリケーションのパフォーマンスの向上は、次の領域に対処する包括的なアプローチによって最も効果的に達成されます。

  • サーバー リソース – CPU、メモリ、ストレージ
  • ソフトウェア構成 – Linux、Nginx、Php…
  • データベース管理システム (DBMS) 構成 – MySQL、PostgreSQL
  • データベーススキームを最適化し、インデックスを変更します
  • アプリケーションの最適化 – コード、クエリ、アーキテクチャ…

経験豊富な開発者の多くは、データベースのパフォーマンスのチューニングをアプリのパフォーマンスを向上させる機会として捉えていません。これは、この分野についてほとんど知識がないためです。彼らはコードベースの最適化に多くの時間を費やしていますが、投資した時間とエネルギーに見合った価値のある結果が得られなくなる点に達します。 MySQL のチューニングが人気のオープンソース Web アプリケーションのパフォーマンスにどのようなプラスの影響を与えるかに関する私たちの研究は、この事実を開発者に示すことを目的としています。

テストのアプローチ

Laravel Aimeos のテスト手順では、シードされたデータを使用して構成の前後でアプリのパフォーマンスを比較できます。最初にデフォルト構成でテストを実行することで、調整された構成と比較するための貴重な制御結果が得られます。

次のプロセスを使用して各アプリケーションを準備し、テストしました。

  1. Laravel Aimeos をデプロイします。
  2. データを含むシード データベース。
  3. JMeter のテストを準備します。
  4. 10 分間テストを実行 – Blazemeter パフォーマンス テスト プラットフォームを使用して JMeter テストを実行しました。
  5. MariaDB 構成の調整 – デフォルト構成のテスト後、セットアップは同じままでしたが、MariaDB はワークロード、サーバー リソース、データベース サイズに合わせて調整されました。
  6. テストの再実行 – 調整された構成に対して Blazemeter を使用して JMeter テストを繰り返しました。

テスト中の JMeter テスト、MySQL ステータス、および MySQL 変数を Github で公開しました。

どのような指標を調べたのでしょうか?

この調査中に調査した指標は次のとおりです:

  1. 応答時間 (レイテンシー) は、リクエストの送信からサーバー側での処理まで、クライアントが最初のバイトを受信するまでの時間です。これは、サーバーのパフォーマンスを把握するための重要な指標です。
  2. 1 秒あたりのクエリ数 は、データベース サーバーが 1 秒あたりに実行するクエリの数を測定するメトリクスです。
  3. CPU 使用率.

ワークロードを比較するために、CPU 使用率1 秒あたりのクエリ数 のメトリクスを収集しました。

ララベル・アイメオス

Aimeos Laravel は、オンライン ショップ、マーケットプレイス、B2B アプリを作成するための人気のある e コマース Web アプリ フレームワークです。 Aimeos を使用すると、ユーザーは 10 億を超えるアイテムをサポートするように拡張できる Laravel 用の API ファーストの e コマース ショップを作成できます。 30 以上の言語で利用でき、インストール数は 300,000 を超えています。

テストのセットアップ

Aimeos をテストするために、10 人のユーザーでテストを開始しましたが、デフォルトの構成ではテストを完了できなかったため、ユーザーの数を減らす必要がありました。

データベースに 500 MB のデータをシードしました。
テスト時間は 10 分でした。

使用したもの:

  • オペレーティング システムとして Debian 11 がインストールされている AWS EC2 インスタンス c5.xlarge、
  • Web サーバーとしての Apache、
  • MariaDB 10.5 はデータベース サイズ 500 MB のデフォルト構成に設定されています。

MySQL の構成

Aimeos Laravel で使用される構成は次のとおりです:

Laravel Aimeos 500Mb 用に調整された構成

query_cache_type=1
query_cache_size=134217728
query_cache_limit=16777216
query_cache_min_res_unit=4096
thread_cache_size=0
key_buffer_size=8388608
max_allowed_packet=1073741824
sort_buffer_size=2097152
read_rnd_buffer_size=262144
bulk_insert_buffer_size=8388608
myisam_sort_buffer_size=8388608
innodb_buffer_pool_chunk_size=134217728
innodb_buffer_pool_size=805306368
max_heap_table_size=16777216
tmp_table_size=16777216
join_buffer_size=8388608
max_connections=151
table_open_cache=2048
table_definition_cache=1408
innodb_flush_log_at_trx_commit=1
innodb_log_file_size=201326592
innodb_log_buffer_size=16777216
innodb_write_io_threads=4
innodb_read_io_threads=4
innodb_file_per_table=1
innodb_flush_method=O_DIRECT
innodb_thread_concurrency=0
innodb_purge_threads=4
optimizer_search_depth=0
thread_handling=pool-of-threads
thread_pool_size=2

テスト結果

Aimeo Laravel のテスト結果では、デフォルト構成と調整された構成の間で劇的なパフォーマンスの向上が示されました。

MySQL の最適化により、平均サーバーの応答時間が大幅に改善され、1.4 秒から 800 ミリ秒未満に短縮されました。

応答時間 (レイテンシ) は 42% 減少し、平均 CPU 使用率 は 86% 減少しました。一方、1 秒あたりのクエリ数 は、以前と比べて 291% も増加しました。 1 秒あたり 12 ~ 35 クエリ。

結果のグラフは以下でご覧いただけます:

How MySQL Tuning Improves the Laravel Performance 応答時間 (ミリ秒)、Aimeos で調整された MySQL 構成とデフォルト
How MySQL Tuning Improves the Laravel Performance CPU 使用率 (%)、Aimeos で調整された MySQL 構成とデフォルト
How MySQL Tuning Improves the Laravel Performance 1 秒あたりのクエリ数、Aimeo が調整した MySQL 構成とデフォルト

コミュニティの貢献者

私たちは、Initlab 社の Laravel 開発者である Gevorg Mkrtchyan 氏と Sergey Sinitsa 氏と協力して、この一連の疑問を調査しました。彼らの専門知識に非常に感謝しています。
Sergey は Aimeos をデプロイし、Gevorg はデータベースをシードするためのコードを準備しました。

結論

Aimeos Laravel を使用したテスト手順では、データベースの構成後に 応答時間 (レイテンシー)CPU 使用率、および 1 秒あたりのクエリ数 が大幅に改善されたことがわかりました。サーバー構成。

応答時間 (レイテンシ) は 42% の間で低下し、CPU 使用率 は 86% 低下しました。 Aimeos Laravel 500MB では 1 秒あたりのクエリ数 が 291% 増加しました。

結論として、MySQL チューニングはデータベース管理の重要な側面であり、Laravel アプリケーションのパフォーマンスに大きな影響を与える可能性があります。 Web アプリケーションのパフォーマンスが低いと、ページの読み込み時間が長くなり、リクエスト処理が遅くなり、ユーザー エクスペリエンスが低下する可能性があり、SEO や販売に悪影響を与える可能性があります。 MySQL チューニングで Web アプリのパフォーマンスを最適化することで、企業や組織は売上、ページビュー、コンバージョン率、SEO ランキングを向上させることができます。

この調査により、Laravel アプリケーションのパフォーマンスを向上させる手段として MySQL チューニングの価値を示し、Laravel 開発者がアプリのパフォーマンスを最適化する際にこの実践を考慮することを奨励したいと考えています。

Releem などのツールを使用すると、データベースが最適なパフォーマンスになるように自動的に構成され、ソフトウェア開発チームの負担が軽減されます。

以上がMySQL チューニングが Laravel のパフォーマンスを向上させる方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。