ホームページ  >  記事  >  データベース  >  MySQL でスロークエリログを有効にする方法の詳細な説明

MySQL でスロークエリログを有効にする方法の詳細な説明

小云云
小云云オリジナル
2018-01-17 09:40:451526ブラウズ

この記事では主に MySQL でスロークエリログを開く方法を紹介します。編集者がそれを参考にさせていただきます。編集者をフォローして見てみましょう。皆さんのお役に立てれば幸いです。

1.1 はじめに

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

1.2 データベースにログインして閲覧


[root@localhost lib]# mysql –uroot

パスワードが設定されていないため、パスワードがある場合はmysql –uroot –p

1.2.1 MySqlを入力して確認してくださいスロークエリが有効かどうか


mysql> show variables like 'slow_query%';

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

| Variable_name    | Value                   |

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

| slow_query_log   | OFF                    |

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

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

2 rows in set (0.00 sec)

パラメータの説明:

  1. slow_query_log スロークエリオープンステータス OFF オンになっていない ON オンになっている

  2. slow_query_log_file スロークエリログが保存される場所 (このディレクトリにはMySQL 実行アカウントの書き込み権限。通常は MySQL データ ストレージ ディレクトリに設定されます)

1.2.2 遅いクエリのタイムアウト時間を確認します


mysql> show variables like 'long%';

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

| Variable_name  | Value   |

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

| long_query_time | 10.000000 |

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

1 row in set (0.00 sec)

long_query_time クエリの記録には何秒かかりますか?デフォルトの 10 秒が 1 秒に変更されます

1.3 変更方法 1: (推奨されません)

方法 1: 利点: 低速クエリを一時的に有効にし、データベースを再起動する必要はありません 欠点: 再起動すると MySql 低速クエリが失敗します

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

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

1.3.1 スロークエリが有効かどうかを確認します


mysql> show variables like '%slow_query_log%';

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

| Variable_name    | Value                   |

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

| slow_query_log   | OFF                    |

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

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

2 rows in set (0.01 sec)

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


mysql> set global slow_query_log=1;

Query OK, 0 rows affected (0.11 sec)

1.3.2 もう一度見る


mysql> show variables like '%slow_query_log%';

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

| Variable_name    | Value                   |

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

| slow_query_log   | ON                     |

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

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

2 rows in set (0.00 sec)

1.4 修正方法 2: (推奨)

MySql の遅いクエリを修正する my.cnf パスを使用できます。見つけてください

注: 私の 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 log]# vim /etc/my.cnf

[mysqld] を見つけて

を追加してください


slow_query_log =1

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

long_query_time = 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> select sleep(2);

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

| sleep(2) |

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

|    0 |

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

1 row in set (2.00 sec)

1.5.1.2 スロークエリを表示しますクエリログ


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

/application/mysql/bin/mysqld, Version: 5.5.51-log (MySQL Community Server (GPL)). started with:

Tcp port: 3306 Unix socket: /tmp/mysql.sock

Time         Id Command  Argument

/application/mysql/bin/mysqld, Version: 5.5.51-log (MySQL Community Server (GPL)). started with:

Tcp port: 3306 Unix socket: /tmp/mysql.sock

Time         Id Command  Argument

/application/mysql/bin/mysqld, Version: 5.5.51-log (MySQL Community Server (GPL)). started with:

Tcp port: 3306 Unix socket: /tmp/mysql.sock

Time         Id Command  Argument

# Time: 170605 6:37:00

# User@Host: root[root] @ localhost []

# Query_time: 2.000835 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 0

SET timestamp=1496615820;

select sleep(2);

1.5.1.3 MySQLコマンドを通じてスロークエリの数を表示


mysql> show global status like '%Slow_queries%';

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

| Variable_name | Value |

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

| Slow_queries | 1   |

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

1 row in set (0.00 sec)

1.6 ログ分析ツールmysqldumpslow

本番環境で手動で分析したい場合MySQL には、ログ分析ツール mysqldumpslow が用意されています

MySQL スロー クエリ ログの構成と使用方法

通常のクエリ ログとスロー クエリ ログの違いMySQL で

MySQL 最適化のための MySQL 低速クエリ操作の紹介

以上がMySQL でスロークエリログを有効にする方法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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