网站首页 文章专栏 mysql慢查询日志

mysql慢查询日志

编辑时间:2019-04-12 14:00:20 作者:苹果 浏览量:1511


    前言:mysql慢查询日志,有助于我们更好的优化操作数据库代码,优化网站



MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是运行10S以上的语句。默认情况下,MySQLl数据库并不启动慢查询日志,需要我们手动来设置这个参数,当然,如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响。慢查询日志支持将日志记录写入文件,也支持将日志记录写入数据库表。


1. 查看慢日志参数:

--查询配置命令

show variables like '%query%';


--当前配置参数

binlog_rows_query_log_events    OFF  

ft_query_expansion_limit    20

have_query_cache    YES


--时间限制,超过此时间,则记录

long_query_time    10.000000

query_alloc_block_size    8192

query_cache_limit    1048576

query_cache_min_res_unit    4096

query_cache_size    1048576

query_cache_type    OFF

query_cache_wlock_invalidate    OFF

query_prealloc_size    8192


--是否开启慢日志记录

slow_query_log    OFF 


--日志文件

slow_query_log_file    /var/lib/mysql/********.log


2. 修改当前配置

set global 变量名 = 值;

--例如,修改时间限制为20   slong_query_time = 20;

#使用set global slow_query_log=1开启了慢查询日志只对当前数据库生效,MySQL重启后则会失效。如果要永久生效,就必须修改配置文件my.cnf(其它系统变量也是如此)

ps:也可以直接打开慢日志配置文件进行修改,但必须重启服务才能生效


3. 查看MySQL慢日志

mysqldumpslow -s at -a  /usr/local/var/mysql/MacBook-Pro-3-slow.log


常遇问题及解决

1:

mysql> set global slow_query_log=1;

ERROR 29 (HY000): File ' /var/lib/mysql/********.log' not found (Errcode: 13 - Permission denied)

mysql> exit;


mysql对该文件夹无写权限


解决办法:

发现mysql的data目录用户及用户组权限不够

chown -R mysql:mysql  /var/lib/mysql/


2:分批存储

为了使数据更加的清晰可见,我们可以用借助定时任务,每日更新一次日志的存储路径

mysql -u${DB_USER} -p${DB_PASSWD} -e "SET GLOBAL slow_query_log_file ='${MYSQL_DATA}/${DATE}.log';"



    出自:何冰华个人网站

    地址:https://www.hebinghua.com/

    转载请注明出处


来说两句吧
最新评论