MYSQL定位慢查询

在web开发中,我们经常会写出一些SQL语句,一条糟糕的SQL语句可能让你的整个程序都非常慢,超过10秒一般用户就会选择关闭网页。

如何优化SQL语句将那些运行时间比较长的SQL语句找出呢?

MySQL给我们提供了一个很好的功能,那就是慢查询!所谓的慢查询就是通过设置来记录超过一定时间的SQL语句!

那么如何应用慢查询呢?
一、开启MySQL的慢查询日志功能
默认情况下,MySQL是不会记录超过一定执行时间的SQL语句的。要开启这个功能,我们需要修改MySQL的配置文件:

windows下修改my.ini,Linux下修改my.cnf文件。

在[mysqld]最后增加如下命令:
    set GLOBAL slow_query_log =ON ;    表示开启慢查询日志功能
    set long_query_time = 1;  表示设置慢查询的时间为1S,默认为10S,有查询超过了这个时间,将会被记录到慢查询日志中,高版本的可以设置小数。
   slow_query_log_file=c:/slow.log    表示慢查询日志存放的目录文件,默认在mysql的data目录下生成“主机名_slow.log”的文件来存放日志。

上面配置修改好后,重启动MYSQL服务吧!然后开始测试咯!
   
1、在MYSQL控制台输入命令:select sleep(2)

mysql> select sleep(2);
+----------+
| sleep(2) |
+----------+
|        0|
+----------+
1 row in set (2.00 sec)


2、再查看慢查询的日志文件,会看到以下信息。

# Time: 141014 14:28:52
# User@Host: root[root] @ localhost[::1]  Id:     1
# Query_time: 2.000114  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 0
SET timestamp=1413268132;
select sleep(2);

二、MYSQL数据库查看状态的命令:

    show [session|global]status     注:不写默认的为session..session只取出当前会话的状态,global会取出从数据库启动到现在的状态。
    show status                             查看数据库状态,这里面的状态有很多,DBA应该了解大多数。
    show status like ‘uptime’        数据库启动时间(S)
    show status like ‘com_select’         数据库执行了多少次查询
    show status like ‘com_update’       数据库执行了多少次更新
    show status like ‘com_delete’        数据库执行了多少次删除
    show status like ‘com_insert’         数据库执行了多少次插入

总是提示有敏感文字,发布不了,还有一些补充,

请看这个文章:https://cloud.tencent.com/developer/article/1072111

猜你喜欢

转载自my.oschina.net/monroe/blog/1670133