慢查询定位

来源:互联网 发布:mac 购买icloud空间 编辑:程序博客网 时间:2024/05/18 00:59

如何从一个大项目中,迅速的定位执行速度慢的语句. 


首先我们了解mysql数据库的一些运行状态如何查询(比如想知道当前mysql运行的时间/一共执行了多少次select/update/delete.. / 当前连接)


show status

 

常用的:

show status like ‘uptime’;  启用了多长时间

show  stauts like ‘com_select’  show stauts like ‘com_insert’ ...类推 update  delete

 

show [session|global] status like .... 如果你不写 [session|global] 默认是session 会话,指取出当前窗口的执行,如果你想看所有(从mysql 启动到现在,则应该global)

 

show status like ‘connections’;

//显示慢查询次数

show status like ‘slow_queries’;

2.1如何去定位慢查询

默认情况下,mysql认为10秒才是一个慢查询,

show variables like ‘long_query_time’ ; //可以显示当前慢查询时间

setlong_query_time=1 ;//可以修改慢查询时间

 

这时我们如果出现一条语句执行时间超过1秒中,就会统计到.

如果把慢查询的sql记录到我们的一个日志中

在默认情况下,我们的mysql不会记录慢查询,需要在启动mysql时候,指定记录慢查询才可以

bin\mysqld.exe --safe-mode  - -slow-query-log [mysql5.5可以在my.ini指定]

bin\mysqld.exelog-slow-queries=d:/abc.log [低版本mysql5.0可以在my.ini指定]

 

先关闭mysql,再启动, 如果启用了慢查询日志,默认把这个文件放在

my.ini 文件中记录的位置

#Path to the database root

datadir="C:/Documents and Settings/AllUsers/Application Data/MySQL/MySQL Server 5.5/Data/"

0 0