MySQL でスロークエリログを有効にする方法

MySQL でスロークエリログを有効にする方法

1.1 はじめに

スロークエリログを有効にすると、MySQL は指定された時間を超えるクエリステートメントを記録できます。パフォーマンスのボトルネックを特定して分析することで、データベース システムのパフォーマンスをより最適化できます。

1.2 データベースにログインして表示する

[root@localhost lib]# mysql –uroot

パスワードが設定されていないため、パスワードがある場合はmysql –uroot –pにパスワードを入力してください

1.2.1 MySQLに入り、スロークエリが有効になっているかどうかを確認する

mysql> 'slow_query%' のような変数を表示します。

+---------------------+------------------------------------------+

| 変数名 | 値 |

+---------------------+------------------------------------------+

| slow_query_log | オフ |

| slow_query_log_file | /application/mysql/data/localhost-slow.log |

+---------------------+------------------------------------------+

セット内の 2 行 (0.00 秒)

パラメータの説明:

  1. slow_query_log スロークエリの有効化ステータス OFF 有効になっていません ON 有効になっています
  2. slow_query_log_file スロークエリログが保存される場所(このディレクトリには、MySQL 実行アカウントの書き込み権限が必要で、通常は MySQL データストレージディレクトリに設定されます)

1.2.2 スロークエリのタイムアウトを確認する

mysql> 'long%' のような変数を表示します。

+-----------------+-----------+

| 変数名 | 値 |

+-----------------+-----------+

| 長いクエリ時間 | 10.000000 |

+-----------------+-----------+

セット内の 1 行 (0.00 秒)

long_query_time クエリが記録されるまでの秒数。デフォルト値は 10 秒ですが、1 秒に変更されます。

1.3 変更方法 1: (非推奨)

方法1: 利点: データベースを再起動せずにスロークエリを一時的に有効にする 欠点: MySQLがスロークエリを再起動して失敗する

推奨事項: ビジネス ニーズに基づいて、2 番目の方法を使用することをお勧めします。1 番目の方法は一時的に使用できます。

デフォルトでは、slow_query_log の値は OFF になっており、これはスロー クエリ ログが無効になっていることを意味します。以下に示すように、slow_query_log の値を設定することで有効にできます。: スロー クエリ ログを有効にするかどうか。1 はオン、0 はオフを意味します。

1.3.1 スロークエリが有効になっているかどうかを確認する

mysql> '%slow_query_log%' のような変数を表示します。

+---------------------+------------------------------------------+

| 変数名 | 値 |

+---------------------+------------------------------------------+

| slow_query_log | オフ |

| slow_query_log_file | /application/mysql/data/localhost-slow.log |

+---------------------+------------------------------------------+

セットに2行(0.01秒)

入力ステートメントの変更 (再起動後は無効になります。永続的に有効にするには、/etc/my.cnf で変更することをお勧めします)

mysql> グローバル slow_query_log=1 を設定します。

クエリは正常、影響を受けた行は 0 行 (0.11 秒)

1.3.2 再度確認

mysql> '%slow_query_log%' のような変数を表示します。

+---------------------+------------------------------------------+

| 変数名 | 値 |

+---------------------+------------------------------------------+

| slow_query_log | オン |

| slow_query_log_file | /application/mysql/data/localhost-slow.log |

+---------------------+------------------------------------------+

セット内の 2 行 (0.00 秒)

1.4 変更方法2: (推奨)

MySql の遅いクエリを変更します。多くの人は my.cnf のパスを知りません。find を使用して見つけることができます。

注: 私の MySQL はパス /etc/my.cnf (通常はここ) でコンパイルされています。

[root@localhost log]# find / -type f -name "my.cnf"

/application/mysql-5.5.51/mysql-test/suite/rpl/my.cnf

/application/mysql-5.5.51/mysql-test/suite/federated/my.cnf

/application/mysql-5.5.51/mysql-5.5.51-linux2.6-x86_64/mysql-test/suite/rpl/my.cnf

/application/mysql-5.5.51/mysql-5.5.51-linux2.6-x86_64/mysql-test/suite/federated/my.cnf

/etc/my.cnf ### (通常はここ)

1.4.1.1 変更

[root@localhost ログ]# vim /etc/my.cnf

[mysqld]を見つけて追加します

遅いクエリログ = 1

slow_query_log_file=/application/mysql/data/localhost-slow.log

長いクエリ時間 = 1

パラメータの説明:

  1. slow_query_log スロークエリの有効化ステータス 1 が有効になっています
  2. slow_query_log_file スロークエリログが保存される場所
  3. long_query_time クエリが記録されるまでの秒数。デフォルト値は 10 秒ですが、1 秒に変更されます。

変更後、MySQLを再起動します。

1.5 表示とテスト

1.5.1.1 テストスロークエリを挿入する

mysql> sleep(2) を選択します。

+----------+

| 睡眠(2) |

+----------+

| 0 |

+----------+

セット1列(2.00秒)

1.5.1.2 スロークエリログの表示

[root@localhost データ]# cat /application/mysql/data/localhost-slow.log

/application/mysql/bin/mysqld、バージョン: 5.5.51-log (MySQL Community Server (GPL))。次で開始されました:

TCP ポート: 3306 Unix ソケット: /tmp/mysql.sock

時間IDコマンド引数

/application/mysql/bin/mysqld、バージョン: 5.5.51-log (MySQL Community Server (GPL))。次で開始されました:

TCP ポート: 3306 Unix ソケット: /tmp/mysql.sock

時間IDコマンド引数

/application/mysql/bin/mysqld、バージョン: 5.5.51-log (MySQL Community Server (GPL))。次で開始されました:

TCP ポート: 3306 Unix ソケット: /tmp/mysql.sock

時間IDコマンド引数

# 時間: 170605 6:37:00

# ユーザー@ホスト: root[root] @ localhost []

# クエリ時間: 2.000835 ロック時間: 0.000000 送信行数: 1 検査行数: 0

タイムスタンプを1496615820に設定します。

スリープ(2)を選択します。

1.5.1.3 MySQLコマンドによる遅いクエリの数の確認

mysql> '%Slow_queries%' のようなグローバル ステータスを表示します。

+---------------+-------+

| 変数名 | 値 |

+---------------+-------+

| 遅いクエリ | 1 |

+---------------+-------+

セット内の 1 行 (0.00 秒)

1.6 ログ解析ツール mysqldumpslow

本番環境では、手動でログを分析し、SQLを見つけて分析したい場合、それは明らかに手作業です。MySQLはログ分析ツールmysqldumpslowを提供しています。

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

以下もご興味があるかもしれません:
  • MySql のスロークエリ分析とスロークエリログの開き方の詳細説明
  • MYSQL5.7.9 でスロークエリログを有効にするヒント
  • MySQL の遅いクエリ検索とチューニングテスト
  • MySQL スロークエリログの設定と使用方法のチュートリアル
  • MySQL スロークエリログの分析に関する基本チュートリアル
  • MySQLの遅いクエリが失敗の原因となった
  • 遅いSQL文が変換をトリガーしました

<<:  Linux カーネル デバイス ドライバー proc ファイル システム ノート

>>:  Node.js環境でMySQLデータベースを素早く操作する方法を詳しく説明します

推薦する

イメージの起動時にdocker runまたはdocker restartが自動的に終了する問題を解決します

コマンドを実行します: docker run --name centos8 -d centos /b...

MySQL レプリケーション問題の 3 つのパラメータの分析

目次01 sql_slave_skip_counter パラメータ02 スレーブスキップエラーパラメ...

Angular Cookie の読み取りおよび書き込み操作コード

Angular Cookie の読み取りおよび書き込み操作のコードは次のようになります。 var a...

js で下線とキャメルケースの変換を実装する (複数の方法)

目次適用シナリオ:方法 1: 正規表現 (推奨)方法2: 配列のreduceメソッドを使用する方法3...

フロントエンドは画像を遅延ロードする方法を知っている必要があります(3つの方法)

目次1. 遅延読み込みとは何ですか? 2. 遅延読み込みを実装する🌄: 2.1 最初の方法: 2.2...

Linux で MySQL パスワードを忘れた場合の解決策

問題は次のとおりです。mysql -uroot -p コマンドを入力しましたが、パスワードを忘れてし...

vue-cli でレスポンシブ レイアウトを実装する方法

フロントエンド開発を行うと、PCとモバイル端末の適応に必然的に直面することになります。このような問題...

メモリの原則に関する詳細な説明: JS では変数はヒープに保存されるのか、スタックに保存されるのか?

目次1. 冷蔵庫に入りきらない象2. シャドウクローン文字列3. 実際に見た「奇妙なボール」 4. ...

JDBC を MySQL 5.7 に接続する方法

1. まずMySQLとEclipseの環境を準備します。環境がセットアップされたら、Eclipseの...

Elimination の JavaScript ソースコード

ゲームのソースコードのダウンロードアドレスを取得するためのJavaScript:クリックしてソースコ...

MySQL テーブルとデータベースでデータを分割する方法

目次1. 縦方向のスライス1.1 垂直データベース1.2 垂直テーブル分割2. 水平(横断)セグメン...

MySQL 8.0.13 で日付を 0000-00-00 00:00:00 に設定すると発生する問題を解決する

データベース操作を学び始めたばかりです。今日、データを保存していたところ、エラーが発生していることに...

HTML ヘッド構造

以下では、よく使われるヘッド構造と、各タグや要素の意味や使用シーンを紹介します(この記事は、Yisi...

JavaScript配列の一般的なメソッドの詳細な説明

目次一般的な配列メソッドポップ()シフト解除()シフト()スライス()スプライス()配列から重複した...