mysql的慢日志查询对于sql的优化还是很有意义的,具体说下如何开启这个mysql慢查询日志
对于mysql的慢日志开启设置,在my.ini(或my.cnf)文件的[mysqld]下设置如下几个参数:
#开启慢查询 slow_query_log值为1或on表示开启,为0或off为关闭
slow_query_log=on
#设置把慢日志写在那里,未配置的话系统会自动在mysql的data目录下生产一个慢日志文件,文件命名方式为计算机名-slow.log
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 '%quer%'; 查看MYSQL服务器的慢查询状态是否开启
部分参数如下:
show variables like 'have_query_cache'; 查看查询缓存是否可用
long_query_time : 设定慢查询的阀值,超出次设定值的SQL即被记录到慢查询日志,缺省值为10s
slow_query_log : 指定是否开启慢查询日志
log_slow_queries : 指定是否开启慢查询日志(该参数要被slow_query_log取代,做兼容性保留)
slow_query_log_file : 指定慢日志文件存放位置,可以为空,系统会给一个缺省的文件host_name-slow.log
log_queries_not_using_indexes::不使用索引的慢查询日志是否记录到索引
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 数量