我们有时候需要查看mysql的执行历史,比如我们做sql优化的时候,起码要知道执行的sql是什么,框架一般会帮我们拼装sql,所以在程序中不一定能够打印出sql,这个时候就需要mysql的general
log了。
查看设置mysql genneral logshow variables like '%general_log%';set global general_log = off;// on-打开; off-关闭general_log ongeneral_log_file /var/log/mysql/query.log
使用mysql general logtail -f /path/to/log/query.log | grep yourtable13518 prepare select count(*) as `count` from `babysitter_tips` where (tip_type = '1') and (is_enable = 1) and (is_tip = 2) 13518 query describe `babysitter_tips` 13518 close stmt 13518 prepare select `babysitter_tips`.* from `babysitter_tips` where (tip_type = '1') and (is_enable = 1) and (is_tip = 2) order by `created_time` desc limit 5 13518 reset stmt 13518 close stmt 13518 prepare select count(*) as `count` from `babysitter_tips` where (tip_type = '1') and (is_enable = 1) and (is_tip = 2) and (tip_id > 15440) 13518 close stmt 13518 prepare select count(*) as `count` from `babysitter_tips` where (tip_type = '3') and (is_enable = 1) and (is_tip = 2) 13518 query describe `babysitter_tips` 13518 close stmt 13518 prepare select `babysitter_tips`.* from `babysitter_tips` where (tip_type = '3') and (is_enable = 1) and (is_tip = 2) order by `created_time` desc limit 5 13518 reset stmt 13518 close stmt 13518 prepare select count(*) as `count` from `babysitter_tips` where (tip_type = '3') and (is_enable = 1) and (is_tip = 2) and (tip_id > '') 13518 close stmt 13518 prepare select count(*) as `count` from `babysitter_tips` where (tip_type = '2') and (is_enable = 1) and (is_tip = 2) 13518 query describe `babysitter_tips` 13518 close stmt 13518 prepare select `babysitter_tips`.* from `babysitter_tips` where (tip_type = '2') and (is_enable = 1) and (is_tip = 2) order by `created_time` desc limit 5 13518 reset stmt 13518 close stmt
清理mysql general log general log会比较大,所以默认市关闭的,所以最好需要的时候打开,随手关闭。如果发现query.log过大,可以手动删除。在general log打开的情况下,query.log文件类似于mysql表的lock情况,不允许修改和删除,关闭general log就可以操作了。