开启Mysql慢查询来优化mysql
优化sql语句是优化数据库的一个很重要的方面,那么怎么发现那些耗时耗资源的sql语句呢,开启Mysql慢查询!
1.查看是否开启慢查询,默认情况下是关闭的。你的mysql最好在5.1版本以上
mysql> show variables like "%slow%";
- +---------------------+---------------------------------------------------------
- ------------------+
- |Variable_name|Value
- |
- +---------------------+---------------------------------------------------------
- ------------------+
- | log_slow_queries | OFF
- |
- | slow_launch_time |2
- |
- | slow_query_log | OFF
- |
- | slow_query_log_file | D:\software\wamp\wamp\bin\mysql\mysql5.5.20\data\WIN-23J
- S4C29BV4-slow.log |
- +---------------------+---------------------------------------------------------
- ------------------+
2.命令行开启mysql慢查询:
- mysql>setglobal slow_query_log=on;
- Query OK,0 rows affected (0.09 sec)
或者修改mysql配置文件开启mysql慢查询:(记得重启mysql)
Windows下开启MySQL慢查询
MySQL在Windows系统中的配置文件一般是是my.ini找到[mysqld]下面加上:
log-slow-queries = F:\MySQL\log\mysqlslowquery.log
long_query_time = 2
Linux下启用MySQL慢查询
MySQL在Windows系统中的配置文件一般是是my.cnf找到[mysqld]下面加上:
log-slow-queries=/data/mysqldata/slowquery.log
long_query_time=2
3.分析mysql慢查询日志:
mysql慢查询日志类似这样的:
- /usr/local/mysql/libexec/mysqld,Version:5.1.26-rc-log (Source distribution). started with:
- Tcp port:3306Unix socket:/tmp/mysql.sock
- TimeIdCommandArgument
- # Time: 100814 13:28:30
- # User@Host: root[root] @ localhost []
- # Query_time: 10.096500 Lock_time: 0.045791 Rows_sent: 1 Rows_examined: 2374192
- SET timestamp=1281763710;
- 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);
- # Time: 100814 13:37:02
- # User@Host: root[root] @ localhost []
- # Query_time: 10.394134 Lock_time: 0.000091 Rows_sent: 1 Rows_examined: 2374192
- SET timestamp=1281764222;
- 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);
- # Time: 100814 13:37:16
- # User@Host: root[root] @ localhost []
- # Query_time: 4.608920 Lock_time: 0.000078 Rows_sent: 1 Rows_examined: 1260544
- SET timestamp=1281764236;
- 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;
看日志可以看出它记录了mysql慢查询语句的执行时间、锁定时间等等。
(1)用mysql自带的mysql自带的慢查询分析工具mysqldumpslow
(2)第三方分析工具mysqlsla
安装:
- wget http://hackmysql.com/scripts/mysqlsla-2.03.tar.gz
- tar zvxf mysqlsla-2.03.tar.gz
- cd mysqlsla-2.03
- perl Makefile.PL
- make
- make install
- mysqlsla /data/mysqldata/slow.log
使用:
- [root@phpddt.com mysqlsla-2.03]# mysqlsla /var/lib/mysql/slow-queries.log
- Auto-detected logs as slow logs
- Reportfor slow logs:/var/lib/mysql/slow-queries.log
- 160 queries total,17 unique
- Sortedby't_sum'
- GrandTotals:Time1 s,Lock0 s,Rows sent 3.79k,RowsExamined380.47k
- ______________________________________________________________________ 001 ___
- Count:1(0.62%)
- Time:1 s total,1 s avg,1 s to 1 s max (100.00%)
- LockTime(s):0 total,0 avg,0 to 0 max (0.00%)
- Rows sent :10 avg,10 to 10 max (0.26%)
- Rows examined :10.46k avg,10.46k to 10.46k max (2.75%)
- Database:
- Users:
- root@localhost :100.00%(1) of query,100.00%(160) of all users
- Queryabstract:
- SET timestamp=N; SELECT *,SUM(hits) AS SUM FROM typecho_ranks INNER JOIN typecho_contents ON typecho_contents.cid = typecho_ranks.cid WHERE (month(date)= month(now())) GROUP BY typecho_ranks.cid ORDER BY SUM(hits) DESC LIMIT N;
- Query sample:
- SET timestamp=1381248477;
- SELECT *,sum(`hits`)as`sum` FROM typecho_ranks INNER JOIN typecho_contents ON typecho_contents.`cid`= typecho_ranks.`cid` WHERE (MONTH(`date`)= MONTH(now())) GROUP BY typecho_ranks.`cid` ORDER BY sum(`hits`) DESC LIMIT 10;
- ______________________________________________________________________ 002 ___
- Count:1(0.62%)
- Time:0 total,0 avg,0 to 0 max (0.00%)
- LockTime(s):0 total,0 avg,0 to 0 max (0.00%)
- Rows sent :25 avg,25 to 25 max (0.66%)
- Rows examined :25 avg,25 to 25 max (0.01%)
- Database: stblog
- Users:
- root@localhost :100.00%(1) of query,100.00%(160) of all users
- Queryabstract:
- SELECT * FROM (settings);
- Query sample:
- SELECT *
- FROM (`settings`);
分析格式如下:
Rows examined, 扫描的行数量.
Query sample, sql语句
开启Mysql慢查询来优化mysql的更多相关文章
- (转)MySQL慢查询分析优化 + MySQL调优
.long_query_time的默认值为10,意思是运行10S以上的语句. .临时设置开启慢查询日志 mysql> show variables like '%slow_query_log%' ...
- mysql数据库优化课程---16、mysql慢查询和优化表空间
mysql数据库优化课程---16.mysql慢查询和优化表空间 一.总结 一句话总结: a.慢查询的话找到存储慢查询的那个日志文件 b.优化表空间的话可以用optimize table sales; ...
- MySql学习—— 查询性能优化 深入理解MySql如何执行查询
本篇深入了解查询优化和服务器的内部机制,了解MySql如何执行特定查询,从中也可以知道如何更改查询执行计划,当我们深入理解MySql如何真正地执行查询,明白高效和低效的真正含义,在实际应用中就能扬长避 ...
- MySQL子查询的优化
本文基于MySQL5.7.19测试 创建四张表,pt1.pt2表加上主键 mysql> create table t1 (a1 int, b1 int); mysql> create ta ...
- MySQL之查询性能优化(四)
优化特定类型的查询 COUNT()的作用 COUNT()是一个特殊函数,有两个非常不同的作用:它可以统计某个列值的数量,也可以统计行数.在统计列值时要求列值是非空的(不统计NULL). 如果在COUN ...
- MySQL之查询性能优化(三)
MySQL查询优化器的局限性 MySQL的万能“嵌套循环”并不是对每种查询都是最优的.不过还好,MySQL查询优化只对少部分查询不适用,而且我们往往可以通过改写查询让MySQL高效地完成工作. 关联子 ...
- MySQL之查询性能优化(二)
查询执行的基础 当希望MySQL能够以更高的性能运行查询时,最好的办法就是弄清楚MySQL是如何优化和执行查询的.MySQL执行一个查询的过程,根据图1-1,我们可以看到当向MySQL发送一个请求时, ...
- MySQL之查询性能优化(一)
为什么查询速度会慢 通常来说,查询的生命周期大致可以按照顺序来看:从客户端,到服务器,然后在服务器上进行解析,生成执行计划,执行,并返回结果给客户端.其中“执行”可以认为是整个生命周期中最重要的阶段, ...
- 使用聚集索引和非聚集索引对MySQL分页查询的优化
内容摘录来源:MSSQL123 ,lujun9972.github.io/blog/2018/03/13/如何编写bash-completion-script/ 一.先公布下结论: 1.如果分页排序字 ...
随机推荐
- decimal类型数据如何保留两位小数
日常开发中,decimal作为货币类型,经常会处理保留两位小数的问题. 本站整理两种,decimal类型保留两位小数的方法. 第一种: decimal d = 46.28111m;string res ...
- Nginx系列~概念与windows下环境搭建
概述 Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx 是由 Igor Sys ...
- CSS中.和#区别
一.问题来源 制作导航栏,参考别人的代码,发现的. 二.解析 2.1 概述 id:用来定义页面中大的样式,如栏目划分,顶部,正文,底部等:用#top的形式来定义: class:用来定义一些比较细节的样 ...
- Jzzhu and Chocolate
CF#257 div2 C:http://codeforces.com/contest/450/problem/C 题意:n*m的方格,每次可以横着或者纵向的切一刀,问切k之后,最小的最大是多少. 题 ...
- Quantization Method
如上一篇Quantization所说,可以在编码端通过设置offset来调整量化后的值,从而趋向于期望的量化值,而且在逆量化公式可以看出offset值在逆量化的时候是不会用到的. 目前来说,确定off ...
- ISO 7810 协议小结
ISO 7816规定了Smart Card的传输协议分为 T=0 异步半双工字符传输协议 T=1 异步半双工块传输协议 T=0命令介绍 命令总是由接口设备启动,他以一个5字节的报头通知卡要做什么,然后 ...
- Silverlight 中 读取XML文件
一:xml文件 二:后台代码 private void ReadXml() { List<TreeViewItem> nodes = new List<TreeViewItem> ...
- java操作xml方式比较与详解(DOM、SAX、JDOM、DOM4J)
java中四种操作(DOM.SAX.JDOM.DOM4J)xml方式的比较与详解 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准. ...
- IOS学习教程
http://edu.51cto.com/course/course_id-566.html
- Liferay 6.1开发学习
http://www.huqiwen.com/2013/01/10/liferay-6-1-development-study-17-springmvc-portlet/ http://www.blo ...