首页 数据库 mysql教程 linux下开启mysql慢查询,分析查询语句

linux下开启mysql慢查询,分析查询语句

Jun 07, 2016 pm 03:12 PM
linux mysql 为什么 分析 开启 查询 语句

一,为什么要开启这个查询呢? 数据库是很容易产生瓶颈的地方,现在Nosql大家讨论这么热,估计都被数据库搞郁闷了。mysql中最影响速度的就是那些查询非常慢的语句,这些慢的语句,可能是写的不够合理或者是大数据下多表的联合查询等等,所以我们要找出这些语

一,为什么要开启这个查询呢?

数据库是很容易产生瓶颈的地方,现在Nosql大家讨论这么热,估计都被数据库搞郁闷了。mysql中最影响速度的就是那些查询非常慢的语句,这些慢的语句,可能是写的不够合理或者是大数据下多表的联合查询等等,所以我们要找出这些语句,分析原因,加以优化。这也是发这篇博文的原因

二,开启mysql的慢查询

方法1,用命令开启慢查询

查看复制打印?

  1. mysql> show variables like "%long%";         //查看一下默认为慢查询的时间10秒  
  2. +-----------------+-----------+  
  3. | Variable_name   | Value     |  
  4. +-----------------+-----------+  
  5. | long_query_time | 10.000000 |  
  6. +-----------------+-----------+  
  7. 1 row in set (0.00 sec)  
  8.   
  9. mysql> set global long_query_time=2;          //设置成2秒,加上global,下次进mysql已然生效  
  10. Query OK, 0 rows affected (0.00 sec)  
  11.   
  12. mysql> show variables like "%slow%";          //查看一下慢查询是不是已经开启  
  13. +---------------------+---------------------------------+  
  14. | Variable_name       | Value                           |  
  15. +---------------------+---------------------------------+  
  16. | log_slow_queries    | OFF                             |  
  17. | slow_launch_time    | 2                               |  
  18. | slow_query_log      | OFF                             |  
  19. | slow_query_log_file | /usr/local/mysql/mysql-slow.log |  
  20. +---------------------+---------------------------------+  
  21. 4 rows in set (0.00 sec)  
  22.   
  23. mysql> set slow_query_log='ON';                        //加上global,不然会报错的。  
  24. ERROR 1229 (HY000): Variable 'slow_query_log' is a GLOBAL variable and should be set with SET GLOBAL  
  25. mysql> set global slow_query_log='ON';            //启用慢查询  
  26. Query OK, 0 rows affected (0.28 sec)  
  27.   
  28. mysql> show variables like "%slow%";              //查看是否已经开启  
  29. +---------------------+---------------------------------+  
  30. | Variable_name       | Value                           |  
  31. +---------------------+---------------------------------+  
  32. | log_slow_queries    | ON                              |  
  33. | slow_launch_time    | 2                               |  
  34. | slow_query_log      | ON                              |  
  35. | slow_query_log_file | /usr/local/mysql/mysql-slow.log |  
  36. +---------------------+---------------------------------+  
  37. 4 rows in set (0.00 sec)  

方法2,修改mysql的配置文件my.cnf

在[mysqld]里面加上以下内容

  1. long_query_time = 2  
  2. log-slow-queries = /usr/local/mysql/mysql-slow.log  

重起一下
/usr/local/mysql/libexec/mysqld restart

三,分析工具

分析工具干什么事的呢,其实就是把mysql-slow.log里面记录下来的数据,分析一下显示出来。其实自己写一个shell脚本也是可以把要的信息取出来的。我们来看一下mysql-slow.log里面到底是什么东西

查看复制打印?

  1. [root@BlackGhost mysql]# cat mysql-slow.log     //查看命令  
  2. /usr/local/mysql/libexec/mysqld, Version: 5.1.26-rc-log (Source distribution). started with:  
  3. Tcp port: 3306  Unix socket: /tmp/mysql.sock  
  4. Time                 Id Command    Argument  
  5. # Time: 100814 13:28:30  
  6. # User@Host: root[root] @ localhost []  
  7. # Query_time: 10.096500  Lock_time: 0.045791 Rows_sent: 1  Rows_examined: 2374192  
  8. SET timestamp=1281763710;  
  9. select count(distinct ad_code) as x from ad_visit_history where ad_code in (select ad_code from ad_list where media_id=15);  
  10. # Time: 100814 13:37:02  
  11. # User@Host: root[root] @ localhost []  
  12. # Query_time: 10.394134  Lock_time: 0.000091 Rows_sent: 1  Rows_examined: 2374192  
  13. SET timestamp=1281764222;  
  14. select count(distinct ad_code) as x from ad_visit_history where ad_code in (select ad_code from ad_list where media_id=15);  
  15. # Time: 100814 13:37:16  
  16. # User@Host: root[root] @ localhost []  
  17. # Query_time: 4.608920  Lock_time: 0.000078 Rows_sent: 1  Rows_examined: 1260544  
  18. SET timestamp=1281764236;  
  19. select count(*) as cou  from ad_visit_history where ad_code in (select ad_code from ad_list where id=41) order by id desc;  

看到了,就是记录一下sql语句的执行情况,包括执行时间,锁定时间等,所以要不要分析工具看个人情况,分析工具很多,在这儿只说一下mysql自带的慢查询分析工具mysqldumpslow的使用方法。

查看复制打印?

  1. [root@BlackGhost bin]# mysqldumpslow -h  
  2. Option h requires an argument  
  3. ERROR: bad option  
  4.   
  5. Usage: mysqldumpslow [ OPTS... ] [ LOGS... ]  
  6.   
  7. Parse and summarize the MySQL slow query log. Options are  
  8.   
  9.  --verbose    verbose  
  10.  --debug      debug  
  11.  --help       write this text to standard output  
  12.   
  13.  -v           verbose  
  14.  -d           debug          //查错  
  15.  -s ORDER     what to sort by (t, at, l, al, r, ar etc), 'at' is default     //排序方式query次数,时间,lock的时间和返回的记录数来排序  
  16.  -r           reverse the sort order (largest last instead of first)       //倒排序  
  17.  -t NUM       just show the top n queries                                       //显示前N多个  
  18.  -a           don't abstract all numbers to N and strings to 'S' 
  19.  -n NUM       abstract numbers with at least n digits within names   //抽象的数字,至 少有n位内的名称 
  20.  -g PATTERN   grep: only consider stmts that include this string      //配置模式 
  21.  -h HOSTNAME  hostname of db server for *-slow.log filename (can be wildcard),     //mysql所以机器名或者IP 
  22.  default is '*', i.e. match all 
  23.  -i NAME      name of server instance (if using mysql.server startup script) 
  24.  -l           don't subtract lock time from total time           //总时间中不减去锁定时间  

例子:

[root@BlackGhost bin]# ./mysqldumpslow -s r -t 20 /usr/local/mysql/mysql-slow.log

[root@BlackGhost bin]# ./mysqldumpslow -s r -t 20 -g 'count' /usr/local/mysql/mysql-slow.log


-----整理自网上

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1662
14
CakePHP 教程
1418
52
Laravel 教程
1311
25
PHP教程
1261
29
C# 教程
1234
24
在MySQL中解释外键的目的。 在MySQL中解释外键的目的。 Apr 25, 2025 am 12:17 AM

在MySQL中,外键的作用是建立表与表之间的关系,确保数据的一致性和完整性。外键通过引用完整性检查和级联操作维护数据的有效性,使用时需注意性能优化和避免常见错误。

比较和对比Mysql和Mariadb。 比较和对比Mysql和Mariadb。 Apr 26, 2025 am 12:08 AM

MySQL和MariaDB的主要区别在于性能、功能和许可证:1.MySQL由Oracle开发,MariaDB是其分支。2.MariaDB在高负载环境中性能可能更好。3.MariaDB提供了更多的存储引擎和功能。4.MySQL采用双重许可证,MariaDB完全开源。选择时应考虑现有基础设施、性能需求、功能需求和许可证成本。

SQL与MySQL:澄清两者之间的关系 SQL与MySQL:澄清两者之间的关系 Apr 24, 2025 am 12:02 AM

SQL是一种用于管理关系数据库的标准语言,而MySQL是一个使用SQL的数据库管理系统。SQL定义了与数据库交互的方式,包括CRUD操作,而MySQL实现了SQL标准并提供了额外的功能,如存储过程和触发器。

MySQL与Oracle有何不同? MySQL与Oracle有何不同? Apr 22, 2025 pm 05:57 PM

MySQL适合快速开发和中小型应用,Oracle适合大型企业和高可用性需求。1)MySQL开源、易用,适用于Web应用和中小型企业。2)Oracle功能强大,适合大型企业和政府机构。3)MySQL支持多种存储引擎,Oracle提供丰富的企业级功能。

Linux操作:管理文件,目录和权限 Linux操作:管理文件,目录和权限 Apr 23, 2025 am 12:19 AM

在Linux中,文件和目录管理使用ls、cd、mkdir、rm、cp、mv命令,权限管理使用chmod、chown、chgrp命令。1.文件和目录管理命令如ls-l列出详细信息,mkdir-p递归创建目录。2.权限管理命令如chmod755file设置文件权限,chownuserfile改变文件所有者,chgrpgroupfile改变文件所属组。这些命令基于文件系统结构和用户、组系统,通过系统调用和元数据实现操作和控制。

MacOS与Linux:探索差异和相似之处 MacOS与Linux:探索差异和相似之处 Apr 25, 2025 am 12:03 AM

Macosandlinuxbothofferuniquerenths:Macosprovidesa-frignlylexperienceWithExcelenthardArdWareIntegration,而Lilinuxexcelsinflexibilitionallibility andCommunitysupport.macos,evartednebyBybyBybyBybyByapple,issone bybyapple,seknoybyapple

如何理解C  中的DMA操作? 如何理解C 中的DMA操作? Apr 28, 2025 pm 10:09 PM

DMA在C 中是指DirectMemoryAccess,直接内存访问技术,允许硬件设备直接与内存进行数据传输,不需要CPU干预。1)DMA操作高度依赖于硬件设备和驱动程序,实现方式因系统而异。2)直接访问内存可能带来安全风险,需确保代码的正确性和安全性。3)DMA可提高性能,但使用不当可能导致系统性能下降。通过实践和学习,可以掌握DMA的使用技巧,在高速数据传输和实时信号处理等场景中发挥其最大效能。

MySQL批量插入数据的高效方法 MySQL批量插入数据的高效方法 Apr 29, 2025 pm 04:18 PM

MySQL批量插入数据的高效方法包括:1.使用INSERTINTO...VALUES语法,2.利用LOADDATAINFILE命令,3.使用事务处理,4.调整批量大小,5.禁用索引,6.使用INSERTIGNORE或INSERT...ONDUPLICATEKEYUPDATE,这些方法能显着提升数据库操作效率。

See all articles