当我们数据库SQL查询性能降低以后,我们需要将慢的SQL记录下来方便我们对SQL或业务进行调整,要开启慢SQL记录需要我们手动到数据库开启的,只有当需要检测慢SQL的时候才建议开启,平时建议常关闭。
查询语句 :SHOW VARIABLES LIKE '%slow_query_log%'
当查询出来slow_query_log=OFF的时候表示未开启慢SQL监听。
开启语句 : SET GLOBAL slow_query_log=1
只对当前SQL生效,如果SQL客户端关闭或重启将会失效(推荐使用)
想要长期开启需要修改配置文件my.cnf,增加如下两行代码
slow_query_log=1
slow_query_log_file=/var/lib/mysql/(SET GLOBAL slow_query_log=1)
里面 slow_query_log_file字段
不建议长期开启,以免影响数据库效率和性能。
执行多长时间为慢SQL呢 ?
执行SQL SHOW VARIABLES LIKE 'long_query_time%' 会查询出来一个value数据这里需要注意的是里面的value单位为秒,默认是大于10秒的SQL将进行慢SQL记录。
如何修改慢SQL记录时间呢?
执行SQL SET GLOBAL long_query_time=3 ,这里需要注意的是修改以后需要重新开启一个窗口查询才会显示出来,不然还是会显示默认的(10).
模拟测试SQL : SELECT sleep(4) 这条SQL将执行4秒钟。
通过上面的执行以后我们可以直接查询慢SQL总数量 :
SHOW GLOBAL STATUS LIKE '%Slow_queries%'
你所编写的SQL都将会记录到mysql数据库里面的general_log表里面,可以用
select * from mysql.general_log 查询SQL执行记录和执行时间,方便我们快速定位问题。
注意 : 全局查询SQL日志永远不要在生产环境开启,SQL执行记录需要开启以后才会存放到
general_log 表里面。