MySQL日志详细解析(6)

mysql> use  mysql;                    #在此数据库中
Database changed
mysql> show  tables;
+---------------------------+
|  Tables_in_mysql          |
+---------------------------+
|  columns_priv              |
| db                        |
| event                    |
| func                      |
| general_log              |      #这个就是查询日志的表输出位置
|  help_category            |
|  help_keyword              |
|  help_relation            |
| help_topic
………………                |
+---------------------------+

慢查询日志:
慢查询日志是用来记录执行时间超过指定时间的查询语句。通过慢查询日志,可以查找出哪些查询语句的执行效率很低,以便进行优化。一般建议开启,它对服务器性能的影响微乎其微,但是可以记录mysql服务器上执行了很长时间的查询语句。可以帮助我们定位性能问题的。
查看慢查询日志的定义:

mysql> SHOW  GLOBAL VARIABLES LIKE '%log%';
|  slow_query_log        | OFF    #定义慢查询日志的
|  slow_query_log_file    |/mydata/data/linuxidc-slow.log    #输出方式为file(文件)时定义慢查询日志的位置

启动和设置慢查询日志:
1、通过配置文件my.cnf中的log-slow-queries选项可以开启慢查询日志;形式如下:

[root@linuxidc data]#  vim /etc/my.cnf
[mysqld]
slow_query_log=1
log-slow-queries [=  DIR/[filename] ]

其中,DIR参数指定慢查询日志的存储路径;filename参数指定日志的文件名,生成日志文件的完成名称为filename-slow.log。如果不指定存储路径,慢查询日志默认存储到mysql数据库的数据文件下,如果不指定文件名,默认文件名为hostname-slow.log。
2、通过登录mysql服务器直接定义,方式如下:
首先要有全局权限;然后执行mysql>set global slow_query_log=1;
时间默认超过多少的称为慢查询日志?
一般都是通过long_query_time选项来设置这个时间值,时间以秒为单位,可以精确到微秒。如果查询时间超过了这个时间值(默认为10秒),这个查询语句将被记录到慢查询日志中。查看服务器默认时间值方式如下:

mysql> SHOW  GLOBAL VARIABLES LIKE 'long%';
+-----------------+-----------+
|  Variable_name  | Value    |
+-----------------+-----------+
| long_query_time  | 10.000000 |
+-----------------+-----------+
1 row in set (0.04  sec)

注释:其中这个慢查询时间并不是只表示语句自身执行超过10秒还包含由于其他资源被征用造成阻塞的查询执行时间或其他原因等都被记录到慢查询中。所以这个慢查的时长表示从查询开始到查询结束中间包含可能的任何原因所经历的所有时间。
测试是否可以记录日志:
mysql> set globalslow_query_log=1;      #开启慢查询日志
Query OK, 0 rowsaffected (0.35 sec)
mysql> setsession long_query_time=0.001;    #更改时间(当前session中,退出则重置)
Query OK, 0 rowsaffected (0.00 sec)
mysql> set globallong_query_time=0.001;      #更改时间(全局中,重启服务则重置)
mysql> SHOWVARIABLES LIKE 'long%';          #查询定义时间
+-----------------+----------+
| Variable_name  | Value  |
+-----------------+----------+
| long_query_time |0.001000 |
+-----------------+----------+
1 row in set (0.00sec)
mysql> showglobal variables like "%slow%";  #查看慢查询日志开启状态
+---------------------+-----------------------------+
| Variable_name      | Value                      |
+---------------------+-----------------------------+
|log_slow_queries    | ON                          |
|slow_launch_time    | 2                          |
|slow_query_log      | ON                          |
|slow_query_log_file | /mydata/data/linuxidc-slow.log |
+---------------------+-----------------------------+
4 rows in set (0.03sec)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/2664cb88d7126d3636e3a9c8cb6894c4.html