`
OrangeHolic
  • 浏览: 260902 次
  • 来自: 北京
社区版块
存档分类
最新评论

Mysql 慢查询日志

阅读更多
mysql慢查询日志对于跟踪有问题的查询非常有用,可以分析出代码实现中耗费资源的sql语句,对我们程序的优化有很高的参考。本篇主要将慢查询日志的开启,日志分析,这也是优化SQL程序的一般步骤中至关重要的一步。

1.mysql慢查询日志
          打开mysql的慢查询日志很简单,只需要在mysql的配置文件里(windows系统是my.ini,linux系统是my.cnf)的[mysqld]下面加上
               log-slow-queries=mysql_slow.log
               long_query_time=3

          其中log-slow-queries为日志的文件名,可以指定目录,如log-slow-queries=D:\mysql_slow.log; long_query_time为定义多长的查询我们定义为慢查询,并记录在log-slow-queries 指定的文件中,在这里我们定义超过3秒的查询进行记录。
          配置完成以后重启Mysql服务器,执行show variables like '%slow%';查看慢查询日志是否开启,如果slow_query_log和log_slow_queries显示为on,那说明服务器的慢查询日志已          
          经开启了。如下显示:
mysql> show variables like '%slow%';
+---------------------+----------------+
| Variable_name       | Value          |
+---------------------+----------------+
| log_slow_queries    | ON             |
| slow_launch_time    | 2              |
| slow_query_log      | ON             |
| slow_query_log_file | mysql_slow.log |
+---------------------+----------------+
4 rows in set (0.00 sec)

slow_launch_time跟慢查询日志没有任何关系, 它代表的是thread create的一个阈值,如果要看 long_query_time,可以用
mysql> show variables like '%long%';
+-----------------+----------+
| Variable_name   | Value    |
+-----------------+----------+
| long_query_time | 3.000000 |
+-----------------+----------+
1 row in set (0.00 sec)

  2.mysql慢查询日志分析
             建表如下图,建表勿要给text加上索引,否则可能出现不了超过3秒的查询,数据表填充了4194304条数据。
            


            我们来执行一个超过3秒的查询,如下:
    
     mysql> select * from wei where text='orange';
+---------+--------+
| id      | text   |
+---------+--------+
| 4103519 | orange |
+---------+--------+

1 row in set (3.79 sec)
再执行一个超过3秒的和一个没有超过3秒的:
mysql> select * from wei where text='xishizhaohua';
Empty set (3.82 sec)

[mysql> select * from wei where id=4564;
+------+--------------------+
| id   | text               |
+------+--------------------+
| 4564 | yyyyyyyyyyyyyyyyyy |
+------+--------------------+
1 row in set (0.02 sec)

可以通过下面的命令查看现在这个session有多少个慢查询:



现在我们可以查看mysql_slow.log(win7默认在C:\ProgramData\MySQL\MySQL Server 5.1\data下面),里边内容如下,内容比较明了,包括查询花费的语句及时间,还包括查询时的时间戳等信息,其中Rows_examined为检查的行数,对我们优化也很有帮助
# Time: 121017 17:38:54
# User@Host: root[root] @ localhost [127.0.0.1]
# Query_time: 3.794217 Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 4194304
SET timestamp=1350466734;
select * from wei where text='orange';
# Time: 121017 17:46:22
# User@Host: root[root] @ localhost [127.0.0.1]
# Query_time: 3.819219  Lock_time: 0.000000 Rows_sent: 0  Rows_examined: 4194304
SET timestamp=1350467182;
select * from wei where text='xishizhaohua';

3.优化
          其实定位到了慢查询语句就已经完成了一大不了,执行explain或者desc命令查看慢查询语句,如下图:
  


          问题很明显,解决方式也很明显,建索引了。
mysql> create index text_index on wei(text);
Query OK, 4194304 rows affected (1 min 58.07 sec)
Records: 4194304  Duplicates: 0  Warnings: 0

然后在执行查询操作,用时明显少了很多。
mysql> select * from wei where text='orange';
+---------+--------+
| id      | text   |
+---------+--------+
| 4103519 | orange |
+---------+--------+
1 row in set (0.33 sec)

mysql> select * from wei where text='xishizhaohua';
Empty set (0.01 sec)










  • 大小: 17.3 KB
  • 大小: 4.8 KB
  • 大小: 10.8 KB
分享到:
评论
1 楼 iwindyforest 2014-06-11  
介绍的很详细, 多谢指教, 另外:
打开慢查询日志功能需要有Super权限的用户使用
set global log_slow_queries=on;

相关推荐

    mysql慢查询日志的使用

    ### MySQL慢查询日志的使用 #### 概述 MySQL慢查询日志是MySQL提供的一种日志记录方式,用于记录所有执行时间超过指定阈值(默认10秒)的SQL语句,帮助开发者和DBA定位数据库性能瓶颈,优化SQL查询效率。 #### ...

    MySQL慢查询日志

    ### MySQL慢查询日志详解 #### 一、慢查询日志概述 MySQL慢查询日志是一种重要的工具,用于记录执行时间超过预设阈值的SQL语句。通过对这些记录进行分析,可以找出数据库中的性能瓶颈,并据此采取相应的优化措施。...

    Mysql慢查询日志查看

    Mysql 慢查询日志查看 Mysql 慢查询日志查看是指在 Mysql 数据库中,记录和分析执行时间较长的查询语句,以便优化数据库性能和提高查询效率。慢查询日志查看可以帮助数据库管理员和开发者快速地定位和优化数据库中...

    Mysql慢查询日志_1--如何开启慢查询日志

    MySQL 慢查询日志配置 MySQL 慢查询日志是 MySQL database management system 的一个重要功能,通过该功能可以记录执行时间超过某个阈值的 SQL 语句,从而帮助数据库管理员或开发人员对数据库的性能进行优化和改进...

    MySQL慢查询日志:性能分析的利器

    ### MySQL慢查询日志:性能分析的利器 #### 一、引言:慢查询日志的重要性 在数据库管理中,性能分析是一个至关重要的过程。随着业务的发展和数据量的增长,数据库面临的压力也在不断增加,这就需要我们不断寻找...

    MySQL慢查询日志.docx

    MySQL的慢查询日志是数据库管理员用于识别...总之,MySQL慢查询日志是数据库性能调优的重要入口,通过分析并优化慢查询,可以有效地提升系统的整体性能。在日常运维中,定期检查和处理慢查询日志是一项必不可少的工作。

    mysql慢日志查询

    ### MySQL慢查询日志详解 #### 一、慢查询日志简介 MySQL慢查询日志是一种重要的工具,用于记录执行时间超过指定阈值的SQL语句。这些记录可以帮助数据库管理员和开发人员识别并优化那些效率较低的查询,从而提高...

    Mysql慢查询日志

    mysqldumpslow是一个用于分析MySQL慢查询日志的工具,它可以按时间、行数、读取的数据量等进行排序,帮助我们快速找到那些最耗时的查询,进一步进行优化。 总的来说,通过对MySQL慢查询日志的有效利用和参数配置,...

    MySQL优化篇:慢查询日志.pdf

    首先,要了解MySQL慢查询日志的概念。慢查询日志记录了所有执行时间超过`long_query_time`值的SQL语句。默认情况下,`long_query_time`的值设置为10秒,意味着所有运行时间超过10秒的SQL语句都会被记录下来。然而,...

    mysqllog:Go中的轻量级MySQL慢查询日志解析器

    mysqllog 该软件包提供了一个简单MySQL慢查询日志解析器。示例:从stdin解析日志并将事件打印为JSON package mainimport ("bufio""encoding/json""fmt""os""github.com/Preetam/mysqllog")func main () {p := & ...

    MySQL慢查询日志的配置与使用教程

    MySQL慢查询日志是数据库管理员用来追踪和优化性能的关键工具。它记录那些执行时间超过预设阈值的查询,帮助找出系统中的性能瓶颈。在本教程中,我们将详细介绍如何配置和使用MySQL慢查询日志。 首先,开启慢查询...

    cpp-Slowquery图形化显示MySQL慢日志工具

    "cpp-Slowquery图形化显示MySQL慢日志工具" 指的是一款基于C++语言开发的工具,名为Slowquery,它的主要功能是解析并以图形化方式展示MySQL数据库的慢查询日志。这个工具帮助数据库管理员更直观地理解和分析MySQL...

    MySQL慢查询日志的基本使用教程

    以下是对MySQL慢查询日志相关知识点的详细说明: 1. **启用与配置慢查询日志** - `slow_query_log` 参数:决定是否开启慢查询日志,值为1表示开启,0表示关闭。 - `log_slow_queries`(5.6以下版本)或`slow_...

    wuzhc#zcnote#mysql慢查询日志1

    查看开启状态查看日志文件查看慢查询时间查看日志保存方式查看有多少条慢查询记录修改配置文件配置好后需要重启mysql,试试下面的慢查询:查看慢日志文件:mysql

    mysql开启查看慢查询日志借鉴.pdf

    以下是关于如何开启、查看和分析MySQL慢查询日志的详细说明: 首先,要在MySQL中启用慢查询日志,你需要编辑MySQL配置文件。在Windows系统中,该文件通常是`my.ini`,而在Linux系统中则是`my.cnf`。在`[mysqld]`...

    mysql-slow-log-import-to-elasticsearch:将mysql慢查询日志导入elasticsearch进行分析

    MySQL慢查询日志是数据库管理员用来优化SQL性能的重要工具,它记录了执行时间超过预设阈值的所有查询。而Elasticsearch作为一个强大的全文搜索引擎和实时数据分析平台,常用于日志分析、监控和可视化。本项目"mysql-...

    (mysql面试题)MySQL中的慢查询日志的作用及其使用方法及代码展示.txt

    ### MySQL慢查询日志的作用与使用详解 #### 一、慢查询日志概述 在MySQL数据库管理中,慢查询日志是一项重要的诊断工具,它能够帮助数据库管理员和开发者识别并解决那些执行时间过长的SQL语句所带来的性能问题。...

    优化之旅:深度解析MySQL慢查询日志

    - **高性能**:MySQL以其快速的查询处理和良好的性能而闻名。 - **可靠性**:MySQL提供了多种机制来确保数据的完整性和可靠性,包括事务支持、备份和恢复功能。 - **易于使用**:MySQL提供了简单直观的界面和丰富的...

Global site tag (gtag.js) - Google Analytics