您的位置:首页 > 数据库 > MySQL

mysql记录慢查询

2016-05-18 11:30 591 查看
首先找到my.cnf文件的位置,可以通过sudofind/-namemy.cnf来查找,如果是在OSX中通过homebrew安装,那么是找不到my.cnf这个文件的,可以在
/usr/local/etc目录下创建my.cnf文件,然后将需要重写的设置进行重写。设置好以后重新mysql服务即可

修改my.cnf文件

[mysqld] slow-query-log=1#开启记录慢查询 log_output=TABLE#将结果记录到数据库,如果无这条的话是默认记录到文件 slow-query-log-file='long_query_log'#记录慢查询的文件名 long_query_time=0#记录走过该值的慢查询 log_queries_not_using_indexes#记录不用index的查询

3.修改完后重新启动mysql

4.进入mysql的控制台使用showglobalvairables;来查询变量设置状态

如果遇到错误,使用
mysql_upgrade-uroot-p--force并重新启动mysql尝试解决


5.在数据库中进入表mysql.slow_log来查看记录状况

6.注意如果要使用mysql自带的工具来分析结果的话,一定要把数据存储到log文件中而不是数据库中

sudomysqldumpslow-a-sat-t3/usr/local/var/mysql/long_query_log

该命令的含义是:-a,不用-s或者-n来代替字符串与数字

-s,来指定排序方法,at为平均时间

-t,是来指定选择出排在最前边的三条

7.推荐使用第三方的工具来进行分析日志:

可以使用brewinstallpercona-toolkit来在MAC上安装percona来分析日志

该工具官方网站为:https://www.percona.com/doc/percona-toolkit/2.2/pt-query-digest.html#

下载后使用pt-query-digestlong_query_log即可对日志进行分析

报告分析:


ColumnMeaning
======================================================================
RankThequery'srankwithintheentiresetofqueriesanalyzed
QueryIDThequery'sfingerprint
ResponsetimeThetotalresponsetime,andpercentageofoveralltotal
CallsThenumberoftimesthisquerywasexecuted
R/CallThemeanresponsetimeperexecution
V/MTheVariance-to-meanratioofresponsetime
ItemThedistilledquery

QueryTime:Totaltimeincludinglocktimequeryhastaken
Lock_Time:Totalqueryquerywasinalockedstate
Rowssent:Totalrowssentbyservertoclient
Rowsexamined:TotalrowsscannedbyaMySQLserverforaquery
QPS:Queriesperseconds
Concurrency:approximateconcurrencyforthisquery



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: