MySqlスロークエリ

2587 ワード

まず、現在のMysqlスロークエリのパラメータの状況を確認します.
mysql> show variables like '%slow%';
+---------------------------+------------------------------------+
| Variable_name             | Value                              |
+---------------------------+------------------------------------+
| log_slow_admin_statements | OFF                                |
| log_slow_slave_statements | OFF                                |
| slow_launch_time          | 2                                  |
| slow_query_log            | ON                                 |
| slow_query_log_file       | /var/lib/mysql/i-apsl772j-slow.log |
+---------------------------+------------------------------------+
5       (0.22  )

slow_query_log       --             
slow_query_log_file  --           

もしslow_query_logはOFFで、以下のコマンドでスロークエリーログを開くことができます.
mysql> set global slow_query_log = ON;
Query OK, 0 rows affected (0.02  )

次に、遅いクエリーの時間を見て、次のコマンドを実行します.同時に、次のコマンドで遅いクエリーの時間を設定できます.
mysql> show variables like '%long_query%';
+-----------------+----------+
| Variable_name   | Value    |
+-----------------+----------+
| long_query_time | 2.000000 |
+-----------------+----------+
1       (0.03  )

mysql> set long_query_time=2;
Query OK, 0 rows affected (0.02  )

次に、比較的複雑なクエリーを実行し、遅いクエリーログに記録できるかどうかを見てみましょう.次はただの例で、実際の状況に応じて書くことができ、コマンドの実行が完了したら、上の遅いクエリーのログファイルを開くことができます.遅いクエリに新しいレコードが記録されていることがわかります.
select * from xhy_device_log xl,xhy_device xd where xl.mcode = xd.mcode;

[root@i-apsl772j ~]# cat  /var/lib/mysql/i-apsl772j-slow.log
/usr/sbin/mysqld, Version: 5.7.10 (MySQL Community Server (GPL)). started with:
Tcp port: 3306  Unix socket: /var/lib/mysql/mysql.sock
Time                 Id Command    Argument
# Time: 2016-10-12T04:31:48.245466Z
# User@Host: root[root] @  [125.33.118.101]  Id: 886963
# Query_time: 30.872068  Lock_time: 0.000198 Rows_sent: 65032  Rows_examined: 121726
use xunheyun_device;
SET timestamp=1476246708;
select * from xhy_device_log xl,xhy_device xd where xl.mcode = xd.mcode;

スロー・クエリーのログを記録する方法について説明しましたが、SQLの最適化方法については後述します.本文は次に、遅いクエリーに関する内容を書きます.
ファイルの入力方法を表示します.
mysql> show variables like '%output%';
+----------------------------+-------+
| Variable_name              | Value |
+----------------------------+-------+
| innodb_status_output       | OFF   |
| innodb_status_output_locks | OFF   |
| log_output                 | FILE  |
+----------------------------+-------+
3       (0.05  )