默认情况下,MySQL数据库没有开启慢查询日志,需要我们手动来设置这个参数
如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响。
慢查询日志支持将日志记录写入文件
使用
SHOW VARIABLES LIKE'%slow_query_log%';
查看慢查询日志是否开启,默认关闭
使用
set global slow_query_log=1;
开启慢查询日志
使用
SHOW VARIABLES LIKE'long_query_time%';
查看慢查询默认阈值
默认10秒
使用
set long_query_time=1 ;
调整阈值为1秒
设置以后,我们可以使用
mysqldumpslow命令进行日志分析
工具-SHOW PROCESSLIST查询mysql进程列表,可以杀掉故障进程
工具-SHOW PRIFILES是什么
是mysql提供可以用来分析当前会话中语句执行的资源消耗情况。可以用于SQL的调优测量
默认情况下,参数处于关闭状态,并保存最近15次的运行结果
set profiling = on ;
在show profiles下:
会显示你在开启profiling之后的SQL语句,并给出它们的查询id Duration会显示SQL的执行时间有了查询ID之后,我们可以
查询CPU、内存、IO的执行状况,使用show profile cpu,block io for query 1 ;
Status记录了一条SQL的完整生命周期,后面带着内存、CPO的使用和IO情况,足以帮助我们分析一条SQL的性能,并做出优化了
请注意,如果出现以下Status,证明这条SQL性能会被大幅影响
converting HEAP to MyISAM :查询结果太过大,内存都不够用了往磁盘上搬了 Creating tmp table: 创建临时表,极有可能出现FIleSORT Copying to tmp table on disk 把内存中临时表复制到磁盘,这是一个非常危险的信号,因为这个操作十分消耗CPU资源 lockd 发生死锁以上四个状态,出现任何一个,都必须得优化!!