《MysqL数据库MysqL5.7.9开启慢查询日志的技巧》要点:
本文介绍了MysqL数据库MysqL5.7.9开启慢查询日志的技巧,希望对您有用。如果有疑问,可以联系我们。
用MysqL 5.7.9 作为ZABBIX 2.4.7 的监控数据库. 前段时间开启了慢查询日志,后来发现慢查询日志膨胀到了700MMysqL入门
查看最后100条 大部分都是 0.1 秒的 后来想改,以前是动态设置的 set global slow_query_log=1; 方式的 .MysqL入门
然后想直接用配置文件/etc/my.cnf 配慢查询MysqL入门
# Remove leading # and set to the amount of RAM for the most important data # cache in MysqL. Start at % of total RAM for dedicated server,else %. innodb_buffer_pool_size = M # Remove leading # to turn on a very important data integrity option: logging # changes to the binary log between backups. # log_bin # These are commonly set,remove the # and set as required. basedir = /LANMP/MysqL datadir = /MysqLDATA/data port = # server_id = ..... socket = /tmp/MysqL.sock # Remove leading # to set options mainly useful for reporting servers. # The server defaults are faster for transactions and fast SELECTs. # Adjust sizes as needed,experiment to find the optimal values. join_buffer_size = M sort_buffer_size = M read_rnd_buffer_size = M sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES character_set_server=utf init_connect='SET NAMES utf' slow_query_log = slow_query_log_file = /MysqLDATA/MysqL_slow_query.log long_query_time = log_queries_not_using_indexes = ON
反复启动了好多次 service MysqLd restartMysqL入门
MysqL> show variables like '%query%'; +------------------------------+---------------------------------+ | Variable_name | Value | +------------------------------+---------------------------------+ | binlog_rows_query_log_events | OFF | | ft_query_expansion_limit | 20 | | have_query_cache | YES | | long_query_time | 5.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 | ON | | slow_query_log_file | /MysqLDATA/MysqL_slow_query.log | +------------------------------+---------------------------------+ 13 rows in set (0.00 sec)
老是OFF 状态 而其他的 LONG_QUERY_TIME 得到了改变 5秒MysqL入门
用动态方式设置 报错MysqL入门
MysqL> set global slow_query_log=1; ERROR 29 (HY000): File '/MysqLDATA/MysqL_slow_query.log' not found (Errcode: 13 - Permission denied)
对我已经把它给删了,为傻不自己创建个?MysqL入门
只好自己touch 一个MysqL入门
还是报错 ?MysqL入门
ps -ef |grep MysqLd 发现 还有个MysqL用户启动了MysqLMysqL入门
看来 是用MysqL用户读取慢查询日志的 用户权限问题啦MysqL入门
查看配置:
MysqL入门
//查询慢查询时间 show variables like "long_query_time";默认10s //查看慢查询配置情况 show status like "%slow_queries%"; //查看慢查询日志路径 show variables like "%slow%";
log-slow-queries = D:\wamp\MysqL_slow_query.log long_query_time=5
第一句使用来定义慢查询日志的路径(因为是windows,所以不牵涉权限问题)MysqL入门
第二句使用来定义查过多少秒的查询算是慢查询,我这里定义的是5秒MysqL入门
执行如下sql语句来查看MysqL慢查询的状态MysqL入门
show variables like '%slow%';
执行结果会把是否开启慢查询、慢查询的秒数、慢查询日志等信息打印在屏幕上.MysqL入门
其实想要执行一次有实际意义的慢查询比较困难,因为在自己测试的时候,就算查询有20万条数据的海量表,也只需要0.几秒.我们可以通过如下语句代替:MysqL入门
SELECT SLEEP(10);
通过如下sql语句,来查看一共执行过几次慢查询:MysqL入门
show global status like '%slow%';
MysqL入门