sql >> データベース >  >> RDS >> Mysql

MySQLデータベースで低速クエリ(低速クエリログ)のログを有効にする

    高速Webサーバーの主な要件の1つは、最適化された効率的で効果的なSQLステートメントまたはクエリを用意することです。実行に時間がかかりすぎる、または時間がかかる最適でないSQL(Structured Query Language)コマンドまたはステートメントは、多くのシステムリソースを消費し、MySQLデータベースの実行速度を低下させ、クエリのバックログがキューに入れられるようになります。接続制限に達した場合、訪問者は接続を拒否または拒否されます。最悪のシナリオでは、Webサーバーもダウンするか、継続的にパフォーマンスが低下します。このケースは、トラフィックの多いWebサイトで行レベルのロックの代わりにテーブルレベルのロックを使用するMyISAMテーブルタイプを使用している場合に特に当てはまります。

    場合によっては、単一のSQLクエリがすべてのサーバーの問題の原因である可能性があります。 MySQLには、低速のクエリログをキャプチャしたり、最適ではなく終了に時間がかかるクエリを特定したりする機能が組み込まれています。これにより、MySQLデータベースエンジンによる実行に定義された秒数を超えたすべての低速のクエリをログに記録できます。ファイル。遅いクエリログはアクティブ化されていないか、デフォルトでMySQLのインストールがオンになっているため、使用頻度の低いログの1つです。

    遅いクエリログを有効にするには、MySQL構成ファイル(my.cnfまたはmy.ini)に次の行を追加してから、MySQLサーバーを再起動します。

    log-slow-queries

    または、

    log-slow-queries = [path to the log file]

    [ログファイルへのパス]を置き換えます MySQLにログを書き込む低速クエリログファイルへの実際のパス(オプションの値)を使用します。

    または、 –log-slow-queries [=file_name]でmysqldを開始することもできます 遅いクエリログを有効にするオプション。どちらの構文でも、ログファイル名が指定されていない場合、デフォルトの名前は host_nameです。 -slow.log、MySQLデータファイルディレクトリに保存されます。ファイル名が指定されているが、絶対パス名として指定されていない場合、サーバーはファイルをデータディレクトリにも書き込みます。

    遅いクエリログを有効にした後、MySQLは、 long_query_time を超えるすべてのSQLステートメントを含むログファイルを作成、キャプチャ、およびログに記録します。 実行秒数。デフォルトでは10秒に設定されています。 。初期テーブルロックを取得する時間は、実行時間としてカウントされません。 mysqldは、実行後、すべてのロックが解放された後、低速クエリログにステートメントを書き込むため、ログの順序が実行順序と異なる場合があります。

    次に、ログファイル内のすべての低速SQLクエリを調べてから、SQLステートメントを最適化するために必要な手順を実行できます。遅いクエリログは、クエリが完了した時間、クエリの実行にかかった時間、ロックを保護するのにかかった時間、結果として返送された行の数、調査された行の数を示します。結果、使用されたデータベース、および実際のクエリ自体。ただし、ログに含まれるSQLクエリはすでに最適である可能性がありますが、微調整が必​​要な実際の低速ステートメントによってシステムリソースが使い果たされているため、実行速度が遅いことに注意してください。


    1. ディスクI/Oのボトルネックのトラブルシューティング

    2. psqlクライアントは今チェス盤になることができます…

    3. SQLキー

    4. PostgreSQLのスキーマを使用したHibernateおよびマルチテナントデータベース