百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>数据库> MySQL启用慢查询日志记录方法
分享文章到:

MySQL启用慢查询日志记录方法

发布时间:01/15 来源: 浏览: 关键词:
由于程序员写的东西不一定是最优的所以我们只要启用mysql慢查询日志功能就可以分析每一条sql语句所运行相关性能了,下面大家一起来看看。

在MySQL中,慢查询的界定时间是由MySQL内置参数变量long_query_time来指定的,其默认值为10(单位:秒),我们可以通过show variables like 'long_query_time';指令来查看该参数变量的信息:
long_query_time的默认值为10秒

不过,在程序开发过程中,我们认为慢速查询的界定时间并没有10秒这么长,依据不同项目的不同需求,我们一般将慢查询的界定时间设定为1~5秒之间。我们可以使用指令set long_query_time = 秒数来设定long_query_time变量的值。
设定long_query_time的值为1秒

修改了long_query_time参数后,我们还需要让MySQL能够记录下慢查询的日志信息。因为,在默认情况下,MySQL并不会记录慢查询的日志信息。如果要记录慢查询日志,我们需要以命令行方式进入MySQL安装目录in目录(也可将该目录添加到PATH环境变量中),使用如下命令重新启动MySQL:

 代码如下

    #中括号[]内的部分是可选的,file_name表示日志文件路径
    #在5.5及以上版本的MySQL中,使用如下命令启动:
    mysqld --show-query-log[=1] [--show-query-log-file=file_name]

    #在5.0、5.1等低版本的MySQL中,使用如下命令启动:
    mysqld --log-slow-queries[=file_name]

在上述命令中,如果没有指定日志文件名,则日志文件名称默认为主机名-slow.log;如果没有指定文件路径或者指定的文件路径不是绝对路径,则日志文件将默认存放在MySQL配置文件my.ini中参数datadir所指定的目录下。

此外,你也可以将上述命令行启动命令配置到my.ini中的[mysqld]节点下,这样无需每次手动键入上述命令来启动。

 代码如下

    [mysqld]
    #设置慢查询界定时间为1秒
    long_query_time=1

    #5.0、5.1等版本配置如下选项
    log-slow-queries="mysql_slow_query.log"
    #5.5及以上版本配置如下选项
    slow-query-log=On
    slow_query_log_file="mysql_slow_query.log"

注意:虽然慢查询的名字中只包含了”查询”,实际上并不仅仅表示SELECT查询操作,诸如INSERT、UPDATE、DELETE、CALL等其他DML操作,只要是超过指定时间的,都可以称之为“慢查询”,并且会记录在慢查询日志中。

使用explain获取SELECT语句的执行计划信息


这个时候,我们就需要使用EXPLAIN指令来获取SELECT语句执行的细节信息。在MySQL中数据库中,EXPLAIN指令的用法非常简单,如下所示:

EXPLAIN SELECT语句

 代码如下
--例如:EXPLAIN SELECT * FROM admin WHERE user_id = 1;

如果是在Oracle数据库中,我们同样可以使用如下SQL语句来获取SELECT语句的执行计划信息:

 代码如下

EXPLAIN PLAN FOR SELECT语句
--例如:EXPLAIN PLAN FOR SELECT * FROM admin WHERE user_id = 1;

在这里,我们以MySQL为例,在数据库中执行上述EXPLAIN指令,将会输出如下结果(user_id是admin表的主键列):
explain获取SELECT语句执行计划详情

explain获取SELECT语句执行计划详情

为了进一步说明上述执行计划信息所表示的含义,我们再次执行带格式化的EXPLAIN命令

 代码如下
EXPLAIN SELECT * FROM admin WHERE user_id = 1G;

(G在MySQL中表示格式化输出结果),我们将会得到如下信息:

*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE 
        table: admin
         type: const
possible_keys: PRIMARY
          key: PRIMARY
      key_len: 1
          ref: const
         rows: 1
        Extra:
1 row in set (0.00 sec)

 

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有3人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板