mysql慢查询的开启
1.
查询慢查询mysql日志是否启用
show variables like '%log_slow_queries%'
查询当前mysql链接数
show status like 'Threads%'
查看执行慢于多少秒的sql会记录到日志中
show variables like 'long_query_time';
2.配置my.ini文件(inux下文件名为my.cnf), 查找到[mysqld]区段,增加日志的配置,如下示例:
[mysqld]
log="C:/temp/mysql.log"
log_slow_queries="C:/temp/mysql_slow.log"
long_query_time=1
log指示日志文件存放目录;
log_slow_queries指示记录执行时间长的sql日志目录;
long_query_time指示多长时间算是执行时间长,单位s。
注意:
# mysql5.6版本以上,取消了参数log-slow-queries,更改为slow-query-log-file,切记!!
# 还需要加上 slow_query_log = on 否则,还是没用
#log-slow-queries = /home/db/madb/log/slow-query.log
slow_query_log = on
slow-query-log-file = /home/db/madb/log/slow-query.log
long_query_time = 1
语句导致慢查询(sql_text),该慢查询语句的查询时间(query_time),锁表时间(Lock_time),以及扫描过的行数(rows_examined)等信息。
Linux下这些配置项应该已经存在,只是被注释掉了,可以去掉注释。但直接添加配置项也OK啦。
参考:
http://www.cnblogs.com/kimi9py/p/5735043.html
日志分析:
https://blog.csdn.net/timchen525/article/details/75268151
参考:开启慢查询 分析日志
https://www.jianshu.com/p/38cbb5426bee
mysql查询缓存是否需要开启的场景
适用场景
用于频繁提交同一个语句,并且该表数据变化不是很频繁的场景,例如一些静态页面,或者页面中的某块不经常发生变化的信息。
由于查询缓存需要缓存最新数据结果,因此表数据发生任何变化(insert、update、delete或其他可能产生数据变化的操作),都会导致查询缓存被刷新。因而,对于一个更新频率非常低而只读查询频率非常高的场景下,打开查询缓存还是比较有优势的。