目次
スロークエリログをオンにします
スロークエリログコンテンツを分析します
一般的に使用される分析ツールを推奨します
一般的な最適化の提案
ホームページ データベース mysql チュートリアル MySQLスロークエリログを分析して、パフォーマンスボトルネックを見つける

MySQLスロークエリログを分析して、パフォーマンスボトルネックを見つける

Jul 04, 2025 am 02:46 AM
mysql パフォーマンスのボトルネック

MySQLスロークエリログをオンにし、位置づけ可能なパフォーマンスの問題を分析します。 1.構成ファイルを編集するか、動的にSLOW_QUERY_LOGおよびLONG_QUERY_TIMEを設定します。 2。ログには、query_time、lock_time、rows_examinedなどの重要なフィールドが含まれており、効率のボトルネックの判断を支援します。 3. mysqldumpslowまたはpt-query-digestツールを使用して、ログを効率的に分析します。 4.最適化の提案には、インデックスの追加、Select *の回避、複雑なクエリの分割などが含まれます。たとえば、user_idにインデックスを追加すると、スキャンされた行の数を大幅に削減し、クエリ効率を改善できます。

MySQLスロークエリログを分析して、パフォーマンスボトルネックを見つける

MySQLのスロークエリログは、パフォーマンスの問題をトラブルシューティングするための重要なツールです。データベースの応答が遅いことがわかった場合、または一部のページの読み込み時間が大幅に増加した場合、スロークエリログをオンにして分析すると、多くの場合、問題がすぐに見つかります。

MySQLスロークエリログを分析して、パフォーマンスボトルネックを見つける

スロークエリログをオンにします

まず、スロークエリログが有効になっていることを確認し、「スロー」の適切な定義が設定されていることを確認してください。デフォルトでは、この値は1秒ですが、実際のニーズに応じて調整できます。

MySQLスロークエリログを分析して、パフォーマンスボトルネックを見つける
  • my.cnfまたはmy.iniファイルを編集します:
     slow_query_log = 1
    slow_query_log_file = /var/log/mysql/mysql-slow.log
    long_query_time = 0.5

また、SQLを介して動的に設定することもできます。

グローバルslow_query_log = 'on'を設定します。
グローバルlong_query_time = 0.5を設定します。

注:パラメーターを変更した後、セッションを再接続または更新して有効にする必要がある場合があります。

MySQLスロークエリログを分析して、パフォーマンスボトルネックを見つける

スロークエリログコンテンツを分析します

ログファイルのレコードの各行には、実行時間、ロック時間、行数、行数をスキャンする行数、およびSQLステートメントの実際の実行が含まれます。例えば:

 #query_time:2.34 lock_time:0.00 rows_sent:10 rows_examined:100000
select * from orders where user_id = 123;

上記のSQLは10個のデータのみを返しますが、100,000行をスキャンします。これは、インデックスが欠落しているか、クエリメソッドが十分に効率的でない可能性があることを示しています。

いくつかの一般的な重要なフィールド:

  • Query_time :クエリ全体でかかる時間(秒)
  • Lock_time :ロックを待つ時間
  • Rows_examined :スキャンされた行の数
  • Rows_sent :クライアントに送信される行の数

Rows_examined Rows_sentよりもはるかに大きい場合は、インデックスまたはクエリ構造の最適化を検討する必要があります。

一般的に使用される分析ツールを推奨します

手動ログの表示は非効率的であり、一部のツールを使用して分析を支援できます。

  • mysqldumpslow :MySQLにはコマンドラインツールが付属しており、スロークエリをカウントおよび要約できます。

     mysqldumpslow -s at -t 10 /var/log/mysql/mysql-slow.log

    上記のコマンドは、平均時間ごとに並べ替え、トップ10の最も遅いクエリをリストします。

  • PT-Query-Digest :Percona Toolkitのツール。これは、より強力で、より複雑な集約と分析をサポートしています。

     pt-query-digest /var/log/mysql/mysql-slow.log> report.txt

これらのツールは、最適化を優先するために、どのSQLが頻繁に表示され、より多くのリソースを消費するかを見つけるのに役立ちます。

一般的な最適化の提案

遅いクエリを見つけたら、次のステップはそれらを最適化することです。ここにいくつかの一般的な慣行があります:

  • 頻繁に照会されるインデックスフィールド、特にWHEREのフィールドとJOIN条件
  • SELECT *使用を避け、必要なフィールドのみを選択します
  • EXPLAIN使用して実行計画を表示し、インデックスがヒットしたかどうかを確認します
  • 大きなクエリでのリソースの長期使用を回避するために、複雑なクエリを合理的に分割する
  • 統計情報を正確に保つために、テーブル分析を定期的に( ANALYZE TABLE )します

たとえば、上記のSELECT * FROM orders WHERE user_id = 123; user_idにインデックスが確立されていない場合、インデックスを追加することでパフォーマンスを大幅に改善できます。

 Table注文を変更すると、IDX_USER_ID(user_id);

これが再び実行されると、スキャンされた行の数は数万から数十の数十になる可能性がありますが、これは非常に明白です。

基本的にそれだけです。スロークエリログを分析することは特に難しくありませんが、インデックスが実際に機能するかどうか、実行計画が変更されたかどうかなど、いくつかの詳細を無視するのは本当に簡単です。定期的な検査を主張する限り、パフォーマンスの劣化を避けるために潜在的な問題を発見することができます。

以上がMySQLスロークエリログを分析して、パフォーマンスボトルネックを見つけるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

オブジェクトレベルの特権でMySQLを保護します オブジェクトレベルの特権でMySQLを保護します Jul 29, 2025 am 01:34 AM

Tosecuremysqleffectivilly、useobject-levelprivilegestolimituseracesseracessbadeds.beginbyunderstanding thatobject-leveligesapplytodatabases、Tables、orcolumns、subfice finercontrolthangloblabliledeges.next、適用

大規模なMySQLテーブルを管理するためのベストプラクティス 大規模なMySQLテーブルを管理するためのベストプラクティス Aug 05, 2025 am 03:55 AM

大規模なテーブルを扱う場合、MySQLのパフォーマンスと保守性が課題に直面し、構造設計、インデックス最適化、テーブルサブテーブル戦略などから開始する必要があります。オーバーレイインデックスを使用して、クエリ効率を向上させます。スロークエリログを定期的に分析し、無効なインデックスを削除します。 2。パーティションテーブルの合理的な使用:クエリとメンテナンスの効率を改善するための時間範囲やその他の戦略に従ってパーティションをかけますが、分割と削減の問題に注意を払う必要があります。 3.分離とライブラリの分離の読み取りと書き込みを検討してください。ライブラリの分離とテーブルの分離は、大量のデータを備えたシナリオに適しています。ミドルウェアを使用して、トランザクションとクロスストアのクエリの問題を評価することをお勧めします。早期計画と継続的な最適化が重要です。

コンテンツ管理システム(CMS)のMySQLの最適化 コンテンツ管理システム(CMS)のMySQLの最適化 Jul 28, 2025 am 03:19 AM

toimprovemysqlperformanceforcmsplatformslikewwordpress、最初にaCachinginginslikEridEdisoredisoredisoredisoredisoredisoredisoredisoredisoredisomcaching(承認可能)、およびandusepagecachingpluginstoservestaticfiles.sond、sedemysemysemysqlconfigurationiincurationbyincurationcurationcurationは

一般的なMySQL接続エラーのトラブルシューティング方法は? 一般的なMySQL接続エラーのトラブルシューティング方法は? Aug 08, 2025 am 06:44 AM

MySQLサービスが実行されているかどうかを確認して、sudosystemctlstatusmysqlを使用して確認および開始します。 2.リモート接続を許可してサービスを再起動するために、バインドアドレスが0.0.0.0に設定されていることを確認してください。 3. 3306ポートが開いているかどうかを確認し、ポートを許可するファイアウォールルールを確認して構成します。 4。「アクセス」エラーの場合、ユーザー名、パスワード、ホスト名を確認し、mysqlにログインしてmysql.userテーブルをクエリしてアクセス許可を確認する必要があります。必要に応じて、 'your_user'@'%'を使用するなど、ユーザーを作成または更新して承認します。 5. caching_sha2_passwordにより認証が失われた場合

MySQLの切り捨て、削除、ドロップの違いは何ですか? MySQLの切り捨て、削除、ドロップの違いは何ですか? Aug 05, 2025 am 09:39 AM

deleteremovesspecificorallrows、keepstable-structure、asollollbackandtriggers、およびdoesnotresetauto-increment;

Check Constraintsを使用してMySQLのデータルールを実施する方法は? Check Constraintsを使用してMySQLのデータルールを実施する方法は? Aug 06, 2025 pm 04:49 PM

MySQLは、バージョン8.0.16から効果的なドメインの完全性を強制するためのチェック制約をサポートしています。 1.テーブルを作成するときに制約を追加する:createTableを使用して、18歳以上、給与> 0、部門の制限値などのチェック条件を定義します。 2。テーブルを変更して制約を追加します。AlterTableadDconstraintを使用して、名前以外の名前などのフィールド値を制限します。 3.複雑な条件を使用する:終了日≥の日付や完了ステータスなどのマルチカラムロジックと式のサポートは、終了日を持つ必要があります。 4。制約の削除:AlterTabledRopConstraintを使用して、削除する名前を指定します。 5。注:mysql8.0.16、innodbまたはmyisamを引用する必要があります

MySQLデータ系統追跡の実装 MySQLデータ系統追跡の実装 Aug 02, 2025 pm 12:37 PM

MySQLデータの血Tiesトラッキングを実現するためのコア方法は次のとおりです。1。ビンログを使用して、データ変更ソースを記録し、BINLOGを有効および分析し、アプリケーション層のコンテキストと組み合わせて特定のビジネスアクションを追跡します。 2. TAGSをETLプロセスに注入し、ツールを同期するときにソースとターゲットのマッピング関係を記録します。 3.コメントとメタデータタグをデータに追加し、テーブルを構築するときにフィールドソースを説明し、メタデータ管理システムに接続して視覚マップを形成します。 4.主要なキーの一貫性に注意し、SQL分析、バージョン制御データモデルの変更への過度の依存性を避け、正確で信頼性の高いブラッドタイの追跡を確実にするために、血の絆データを定期的に確認してください。

MySQLデータベースにタグ付けシステムを実装する方法は? MySQLデータベースにタグ付けシステムを実装する方法は? Aug 05, 2025 am 05:41 AM

useamany-to-manyrelationshipwithunctiontabletolinkitemsandtagsviathreetables:アイテム、タグ、anditem_tags.2

See all articles