MySQL 構成のチューニングは、データベースの専門家や管理者によって実装されるデータベース管理の重要なコンポーネントです。ハードウェアとワークロードに合わせてデータベースを構成することを目的としています。しかし、データベース管理の領域を超えて、MySQL 構成チューニングの有用性はほとんど無視されています。
MySQL のチューニングは Web アプリのパフォーマンスに大きな影響を与える可能性があるという仮説を立てています。 MySQL チューニングの価値を示すことができれば、企業や組織はこの実践をより大規模に取り入れたいと考えるようになるかもしれません。
チューニングによるアプリケーションのパフォーマンスの向上は、次の領域に対処する包括的なアプローチによって最も効果的に達成されます。
経験豊富な開発者の多くは、データベースのパフォーマンス チューニングをアプリのパフォーマンスを向上させる機会として捉えていません。これは、この分野についてほとんど知識がないためです。彼らはコードベースの最適化に多くの時間を費やしていますが、投資した時間とエネルギーに見合った価値のある結果が得られなくなる点に達します。 MySQL のチューニングが人気のオープンソース Web アプリケーションのパフォーマンスにどのようなプラスの影響を与えるかに関する私たちの研究は、この事実を開発者に示すことを目的としています。
Laravel Aimeos のテスト手順では、シードされたデータを使用して構成の前後でアプリのパフォーマンスを比較できます。最初にデフォルト構成でテストを実行することで、調整された構成と比較するための貴重な制御結果が得られます。
次のプロセスを使用して各アプリケーションを準備し、テストしました:
テスト中の JMeter テスト、MySQL ステータス、および MySQL 変数を Github で公開しました。
この調査中に調査した指標は次のとおりです:
ワークロードを比較するために、CPU 使用率 と 1 秒あたりのクエリ数 の指標を収集しました。
Aimeos Laravel は、オンライン ショップ、マーケットプレイス、B2B アプリを作成するための人気のある e コマース Web アプリ フレームワークです。 Aimeos を使用すると、ユーザーは 10 億を超えるアイテムをサポートするように拡張できる Laravel 用の API ファーストの e コマース ショップを作成できます。 30 以上の言語で利用でき、インストール数は 300,000 を超えています。
Aimeos をテストするために、10 人のユーザーでテストを開始しましたが、デフォルトの構成ではテストを完了できなかったため、ユーザーの数を減らす必要がありました。
データベースに 500 MB のデータをシードしました。
テスト時間は 10 分でした。
使用したもの:
Aimeos Laravel で使用される構成は次のとおりです:
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
Aimeos Laravel のテスト結果では、デフォルト構成と調整された構成の間でパフォーマンスが大幅に向上していることがわかりました。
MySQL の最適化により、平均サーバーの応答時間が大幅に向上し、1.4 秒から 800 ミリ秒未満に短縮されました。
応答時間 (レイテンシー) は 42% 減少し、平均 CPU 使用率 は 86% 減少しました。一方、 1 秒あたりのクエリ数 は、以前と比べて 291% という驚異的な増加を示しました。 1 秒あたり 12 ~ 35 クエリ。
結果のグラフは以下でご覧いただけます:
応答時間 (ミリ秒)、Aimeo で調整された MySQL 構成とデフォルトの比較
CPU 使用率 (%)、Aimeo で調整された MySQL 構成とデフォルトの比較
1 秒あたりのクエリ数、Aimeo が調整した MySQL 構成とデフォルトの比較
私たちは、Laravel 開発者である Initlab 社の 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 などのツールを使用すると、データベースが最適なパフォーマンスになるように自動的に構成され、ソフトウェア開発チームの負担が軽減されます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3