首頁  >  文章  >  資料庫  >  詳解mysql慢查詢

詳解mysql慢查詢

怪我咯
怪我咯原創
2017-04-01 10:12:401066瀏覽

1 慢查詢定義

指mysql記錄所有執行超過long_query_time參數設定的時間閾值的SQL語句。慢查詢日誌就是記錄這些sql的日誌。
2 開啟慢查詢日誌
找到mysql設定檔my.cnf.在mysqld的下面新增

log-slow-queries = D:/MySQL/log/mysqld-slow-query.log  #日志存在的位置。(注意权限的问题,可以不用设置,系统会给一个缺省的文件host_name-slow.log)

long-query-time = 5   #SQL执行时间阈值,默认为10秒。

#log-long-format   #说log-long-format选项是用来设置日志的格式,它是以扩展方式记录有关事件。扩展方式可记录谁发出查询和什么时候发出查询的信息。可使我们更好地掌握客户端的操作情况。

#log-slow-admin-statements  #将慢管理语句例如OPTIMIZE TABLE、ANALYZE TABLE和ALTER TABLE记入慢查询日志。

log-queries-not-using-indexes #如果运行的SQL语句没有使用索引,则mysql数据库同样会将这条SQL语句记录到慢查询日志文件中。

配置完畢後重啟mysql服務。
3 測試  
為了方便我只在my.cnf中配置了慢查詢日誌的路徑.
mysql 版本為5.1.73
關於long_query_time :從mysql 5.1開始,long_query_time開始以微秒記錄SQL語句運行時間,之前僅以秒為單位記錄。這樣可以更精確地記錄SQL的運行時間,以供DBA分析。
進入mysql.

mysql> show VARIABLES like "%slow%"; #查看慢查询日志相关的信息

mysql> set global long_query_time=0.01;  #将mysql位置的值改为 0.01

mysql> show variables like "long_query_time"; #查看是否生效

mysql> select sleep(2); #延迟2秒执行 注:这条sql执行完毕以后应该已经在慢查询的日志文件中产生相关的信息记录

mysql> show global status like '%slow%'; #查看慢查询语句的次数


在日誌檔案中可以看到已經記錄了sql.
詳解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
注意
log-slow-queries = F:\MySQL \log\mysqlslowquery.log為慢查詢日誌存放的位置,一般這個目錄要有MySQL的運行帳號的可寫權限,一般都將這個目錄設定為MySQL的資料存放目錄;
long_query_time=2中的2表示查詢超過兩秒才記錄;



以上是詳解mysql慢查詢的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn