`

<转>深入mysql慢查询设置的详解

 
阅读更多
原链接:http://www.jb51.net/article/38274.htm

在web开发中,我们经常会写出一些SQL语句,一条糟糕的SQL语句可能让你的整个程序都非常慢,超过10秒一般用户就会选择关闭网页,如何优化SQL语句将那些运行时间 比较长的SQL语句找出呢?MySQL给我们提供了一个很好的功能,那就是慢查询!所谓的慢查询就是通过设置来记录超过一定时间的SQL语句!那么如何应用慢查询呢?
1.开启MySQL的慢查询日志功能
默认情况下,MySQL是不会记录超过一定执行时间的SQL语句的。要开启这个功能,我们需要修改MySQL的配置文件,windows下修改my.ini,Linux下修改my.cnf文件,在[mysqld]最后增加如下命令:
复制代码 代码如下:

slow_query_log
long_query_time = 1

2.测试慢查询日志功能
(1)进入MySql控制台,执行如下语句:
复制代码 代码如下:

select sleep(2);

mysql> select sleep(2);
+----------+
| sleep(2) |
+----------+
|        0 |
+----------+
1 row in set (2.12 sec)
(2)查看慢查询日志文件think-slow.log,在文件最后发现:
复制代码 代码如下:

# Time: 121120 20:06:23
# User@Host: root[root] @ localhost [127.0.0.1]
# Query_time: 2.104120  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 0
SET timestamp=1353413183;
select sleep(2);

3.解释:
(1)slow_query_log 这句是开启记录慢查询功能,slow_query_log=0关闭;slow_query_log=1开启(这个1可以不写)
(2)long_query_time = 1 这句是记录超过1秒的SQL执行语句
(3)那么这个日志文件存放在什么地方呢?
默认是放在mysql的data目录,并且文件名为host_name-slow.log即 主机名-slow.log,比如在笔者的开发机上就是THINK-slow.log(因为偶用的Thinkpad,呵呵)
(4)如果日志文件不想放在data目录,我们可以通过如下配置指定存放的目录及日志文件名:
slow_query_log_file=file_name
其中file_name就是你的存放日志的目录和文件名,在这里注意有的资料上可能是log-slow-queries=file_name,这个在mysql5.5版已经过时!
4.如何记录低于1s的慢查询记录呢?
MySQL5.21版以前long_query_time 参数的单位是秒,默认值是10。这相当于说最低只能记录执行时间超过 1 秒的查询,怎么记录查询时间超过100毫秒的SQL语句记录呢?在mysql5.21+后版本支持毫秒记录
(1)进入MySql控制台,运行如下sql语句:
复制代码 代码如下:

set global long_query_time=0.1

该句是设置记录慢查询超过时间100ms的SQL,记住要重启mysql才能生效!
(2)测试
进入mysql控制台,执行如下sql语句:
复制代码 代码如下:

select sleep(0.5);

查看慢查询日志文件,我们看到最后添加的新信息:
复制代码 代码如下:

# Time: 121120 20:42:06
# User@Host: root[root] @ localhost [127.0.0.1]
# Query_time: 0.500028  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 0
SET timestamp=1353415326;
select sleep(0.5);
分享到:
评论

相关推荐

    MYSQL

    &lt;br&gt;10.5.2 SELECT 查询的速度 &lt;br&gt;10.5.3 MySQL 怎样优化WHERE子句 &lt;br&gt;10.5.4 MySQL 怎样优化LEFT JOIN &lt;br&gt;10.5.5 MySQL 怎样优化LIMIT &lt;br&gt;10.5.6 INSERT查询的速度 &lt;br&gt;10.5.7 UPDATE查询的速度 &lt;br&gt;10.5.8 ...

    mysql5.1中文手册

    在ANSI模式下运行MySQL&lt;br&gt;1.8.4. MySQL对标准SQL的扩展&lt;br&gt;1.8.5. MySQL与标准SQL的差别&lt;br&gt;1.8.6. MySQL处理约束的方式&lt;br&gt;2. 安装MySQL&lt;br&gt;2.1. 一般安装问题&lt;br&gt;2.1.1. MySQL支持的操作系统&lt;br&gt;2.1.2. 选择要...

    MYSQL培训经典教程(共两部分) 1/2

    MYSQL高级特性 81&lt;br&gt;4.1 集合函数 82&lt;br&gt;4.1.1 行列计数 82&lt;br&gt;4.1.2统计字段值的数目 82&lt;br&gt;4.1.3 计算字段的平均值 83&lt;br&gt;4.1.4 计算字段值的和 84&lt;br&gt;4.1.5 计算字段值的极值 84&lt;br&gt;4.1.6 总结 86&lt;br&gt;4.2 操作...

    MYSQL培训经典教程(共两部分) 2/2

    MYSQL高级特性 81&lt;br&gt;4.1 集合函数 82&lt;br&gt;4.1.1 行列计数 82&lt;br&gt;4.1.2统计字段值的数目 82&lt;br&gt;4.1.3 计算字段的平均值 83&lt;br&gt;4.1.4 计算字段值的和 84&lt;br&gt;4.1.5 计算字段值的极值 84&lt;br&gt;4.1.6 总结 86&lt;br&gt;4.2 操作...

    MySQL 6 绿色精简BAT版 2.24 MB

    7.1.3 6.6 MB &lt;br&gt;地址1&lt;br&gt; &lt;br&gt;地址2 &lt;br&gt;Navicat for MySQL 英文&lt;br&gt;(Linux版)&lt;br&gt;* 非商业使用 8.0.27 20 MB &lt;br&gt;地址1&lt;br&gt;&lt;br&gt; &lt;br&gt;地址2 &lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;MySQL 6 绿色版使用批处理(BAT)文件执行,可以随意...

    mysql driver

    MySQL Connector/J @MYSQL_CJ_VERSION@ (formerly MM.MySQL)&lt;br&gt;MySQL AB's JDBC Driver for MySQL&lt;br&gt;Copyright (c) 2003 MySQL AB&lt;br&gt;&lt;br&gt;CONTENTS&lt;br&gt;&lt;br&gt;* License&lt;br&gt;* Documentation Location&lt;br&gt;&lt;br&gt;&lt;br&gt;...

    Mysql数据库管理工具 phpmyadmin

    &lt;br&gt;&lt;br&gt;mysql数据库的网页管理工具,使用方法 http://主机名/mysql&lt;br&gt;注意,进入后先选择中文界面。&lt;br&gt;&lt;br&gt;该管理工具的使用需具有一定数据库基础,请勿进行危险操作,以免导致数据丢失。&lt;br&gt;&lt;br&gt;另外,为了防止...

    MySQL中文参考手册.chm

    &lt;br/&gt;10.5.2 SELECT 查询的速度 &lt;br/&gt;10.5.3 MySQL 怎样优化WHERE子句 &lt;br/&gt;10.5.4 MySQL 怎样优化LEFT JOIN &lt;br/&gt;10.5.5 MySQL 怎样优化LIMIT &lt;br/&gt;10.5.6 INSERT查询的速度 &lt;br/&gt;10.5.7 UPDATE查询的速度 &lt;br/&gt;...

    Mysql基础教程.chm

    1、MySQL安全性指南 &lt;br/&gt;2、MySQL查询优化讲座-查询优化器 &lt;br/&gt;3、MySQL查询优化讲座-使用索引 &lt;br/&gt;4、MySQL查询优化讲座-数据类型与效率 &lt;br/&gt;5、MySQL查询优化讲座之调度和锁定 &lt;br/&gt;6、MySQL 5.0 新特性...

    java课设超市订单管理系统源代码.zip

    java课设超市订单管理系统源代码。基于mysql数据库,原生JDBC框架,Web工程,大学实训,课程设计。#java课设 导入项目中涉及的 jar包 ... &lt;groupId&gt;mysql&lt;/groupId&gt; &lt;artifactId&gt;mysql-connector-java&lt;/artifactId&gt;

    Mybatis Generator配置详解.md

    ## Mybatis Generator配置详解 一、简介 mybatis-geneator是一款mybatis自动代码生成工具,可以通过配置,快速生成mapper和xml文件。 二、配置方法 在项目的pom文件中添加插件配置 ```java &lt;plugin&gt; ...

    班级班费管理系统EJB3.0+mysql

    系统功能介绍: &lt;br&gt; 管理员功能 :&lt;br&gt; &lt;br&gt; 添加用户&lt;br&gt; 查看所有用户&lt;br&gt; 增加班费收入&lt;br&gt; 增加班费支出&lt;br&gt; 查看所有班费详细记录&lt;br&gt; 查看班费总帐&lt;br&gt;&lt;br&gt; 普通用户功能:&lt;br&gt;&lt;br&gt; 查看班费总帐&lt;br&gt;&lt;br&gt;&lt;br&gt;...

    mysql分布式数据库跨库查询select语句连接器工具Java项目源码.zip

    这是一个&lt;em&gt;mysql&lt;/em&gt; 的 select 语句连接器。通过该工具可以将连接查询&lt;em&gt;分&lt;/em&gt;割成多个单&lt;em&gt;表&lt;/em&gt;查询,再将单&lt;em&gt;表&lt;/em&gt;结果集进行连接,即将数据&lt;em&gt;库&lt;/em&gt;的连接功能上移到工具执行。主要用于解决&lt;em...

    java文集

    &lt;br&gt;Java 6 RowSet 使用完全剖析&lt;br&gt;结合Spring2.0和ActiveMQ进行异步消息调用&lt;br&gt;struts+hibernate增删改查(一)&lt;br&gt;AXIS 布署问题&lt;br&gt;struts+hibernate增删改查(二)&lt;br&gt;MySQL中如何实现Top N及M至N段的记录查询?...

    Linux环境数据库管理员指南

    UNIX/Linux&lt;br&gt; 中使用 Postgres 270&lt;br&gt;9.22.1 启动 postmaster 270&lt;br&gt;9.22.2 使用 pg_options 270&lt;br&gt;9.22.3 认可的选项 271&lt;br&gt;9.23 安全 273&lt;br&gt;9.23.1 用户验证 273&lt;br&gt;9.23.2 基于主机的访问控制 273&lt;br&gt;9.23...

    绿色PHP+apache+mysql服务器APMServ5.2.0

    无需安装,具有灵活的移动性,将其拷贝到其它目录、分区&lt;br&gt;或别的电脑时,均只需点击APMServ.exe中的启动按钮,即可自动进行相关设置,将Apache和&lt;br&gt;MySQL安装为系统服务并启动。APMServ集合了Apache稳定安全的...

    MySQL中文参考手册

    MySQL中文参考手册&lt;br&gt;&lt;br&gt;MySQL是一个精巧的SQL数据库管理系统,虽然它不是开放源代码的产品,但在某些情况下你可以自由使用。由于它的强大功能、灵活性、丰富的应用编程接口(API)以及精巧的系统结构,受到了广大...

    PHP程序设计(第2版) 英文

    安全PHP编程&lt;br&gt;第22章 SQLite&lt;br&gt;第23章 PDO介绍&lt;br&gt;第24章 MySQL介绍&lt;br&gt;第25章 安装和配置MySQL&lt;br&gt;第26章 众多MySQL客户端&lt;br&gt;第27章 MySQL存储引擎和数据类型&lt;br&gt;第28章 保护MySQL的安全&lt;br&gt;第29章 PHP的MySQL...

    Linux 下安装 Mysql5.0

    本TXT文件为第三章Linux 下安装 Mysql5.0&lt;br&gt;测试环境:系统 CentOS 5.2 MySQL版本 5.0.67&lt;br&gt;第一步:下载mysql-5.0.67.tar.gz&lt;br&gt;第二步:安装mysql-5.0.67&lt;br&gt;第三步:编译·安装&lt;br&gt;第四步:安装后的配置  &lt;br&gt;...

    PHP 访问 MySQL ACCESS 类

    &lt;br&gt;connect() // 链接数据库&lt;br&gt;query(string) // 查询语句&lt;br&gt;fetch() // 获取一条查询纪录的数组&lt;br&gt;close() // 关闭数据库连接&lt;br&gt;&lt;br&gt;setPageSize(int) // 设置分页大小,于query()之前调用,参数为0,不进行...

Global site tag (gtag.js) - Google Analytics