Mysql慢日志、缓存配置

mysql的慢日志查询对于sql的优化还是很有意义的,具体说下如何开启这个mysql慢查询日志(默认是开启的)。

关于设置在mysql的官方手册或网上都有很多,但是要注意的是,mysql5.6与之前的版本关于慢日志的设置其变量发生了变化。

对于mysql的慢日志开启设置,在my.ini(或my.cnf)文件的[mysqld]下设置如下几个参数:

如下为5.6以前版本的设置方式:

#设置sql执行时间多长为慢查询

long_query_time = 2

#设置把慢日志写在那里,为空的话系统会自动在mysql的data目录下生产一个慢日志文件,文件命名方式为计算机名-slow.log

log-slow-queries
#表示没有使用索引的sql查询也会记录下来
log-queries-not-using-indexes
 
5.6版本的设置方式:
#开启慢查询 slow_query_log值为1或on表示开启,为0或off为关闭
slow_query_log=on 
#设置慢查询日志放在哪里
slow_query_log_file=mysql-slow 
#设置sql执行时间多长为慢查询
long_query_time=2
#表示没有使用索引的sql查询也会记录下来
log-queries-not-using-indexes


对于mysql的缓存开启设置,在my.ini(或my.cnf)文件的[mysqld]下设置如下几个参数:

#开启缓存query_cache_type值为 0代表关闭查询缓存OFF,1代表开启ON(默认情况下应该是ON),2(DEMAND)代表当sql语句中有SQL_CACHE关键词时才缓存,如:select SQL_CACHE user_name from users where user_id = '100';
query_cache_type = 1
#设置 查询缓存 大小,也就是分配内存大小给查询缓存
query_cache_size = 600000


在mysql命令行输入:

show variables like 'have_query_cache';  查看查询缓存是否可用

show variables like "%query_cache%"  ; 查看是否设置成功(query_cache_limit 控制缓存查询结果的最大值)
show status like '%Qcache%'; 查看缓存的状态


MySQL 提供了一系列的 Global Status 来记录 Query Cache 的当前状态,具体如下:
Qcache_free_blocks:目前还处于空闲状态的 Query Cache 中内存 Block 数目
Qcache_free_memory:目前还处于空闲状态的 Query Cache 内存总量
Qcache_hits:Query Cache 命中次数
Qcache_inserts:向 Query Cache 中插入新的 Query Cache 的次数,也就是没有命中的次数
Qcache_lowmem_prunes:当 Query Cache 内存容量不够,需要从中删除老的 Query Cache 以给新的 Cache 对象使用的次数
Qcache_not_cached:没有被 Cache 的 SQL 数,包括无法被 Cache 的 SQL 以及由于 query_cache_type 设置的不会被 Cache 的 SQL
Qcache_queries_in_cache:目前在 Query Cache 中的 SQL 数量
Qcache_total_blocks:Query Cache 中总的 Block 数量

你可能感兴趣的:(Mysql慢日志、缓存配置)