8服务器配置参数服务器配置参数配置
记录查询:普通日志log、慢速日志log_slow_queries
fMySQL有两种查询日志:普通日志和慢速日志,它们都会记录查询。普通日志记录了服务器接收到的每一个查询,也包含了没有被执行的查询,比如因为错误而未被执行的查询,还有一些非查询事件,比如连接和断开连接,普通日志不包含执行时间或其他只有在查询结束之后才能得到的信息。相反,慢速日志只包含了已经执行过的查询,如果是启动状态,它记录了执行时间超过了特定长度的查询。两种日志都有助于分析,但是慢速日志更有利找到性能较慢的查询。一个相关配置是log_queries_
ot_usi
g_i
dexes,它使服务器把没有使用索引的查询记录到慢速查询日志中,无论它们执行速度有多快。尽管打开慢速日志相对于执行慢速查询来说,通常只增加了很少的时间,但是如果没有使用索引的查询非常快,例如从小数据量表中查询,这样就会记录它们可能导致服务器变慢,甚至还会使用大量的磁盘空间,慢速日志也许就会被那些快速高效的查询塞满。慢查询日志可以用来找到执行时间长的查询,可以用于优化。慢日志打开后,通过设置lo
g_query_time来配置记录查询超过的指定时间,默认值为10秒,根据系统的负载和性能要求进行设置SETGLOBALlo
g_query_time…。
检查又长又慢的查询日志会很麻烦,可以使用MySQLdumpslow命令获得日志中显示的查询摘要来处理慢查询日志。系统两种日志都没有开启,可以在需要的时候打开慢速日志来帮助分析性能较慢的查询。具体实施参考MySQL手册。需要注意的是查询在日志中只出现一次并不意味着它是一个不好的查询,也不意味将来也会慢,查询时快是慢有多种原因:1)表也许被锁定,导致查询处于等待状态;2)数据或索引也许没有被缓存在内存中;3)或者正在进行批处理大量的数据,使得磁盘IO变慢;4)服务器可能同时在运行其他的查询,影响了当前查询的效率。
f因此,只能把慢速查询日志看成调优工作的一部分,可以用它来找到可疑的查询,但需要对它们进行仔细地排查和分析。启用系统慢速日志,分析查询性能慢的时候可以观察该日志信息。
Qcache_hits
Com_select
Qcache_i
serts
检查是否从查询缓存中受益的最直接办法就是检查缓存命中率。它是提供缓存提供的查询结果的数量,而不是服务器执行的数量。当服务器收到select语句的时候,Qcache_hits和Com_select这两个变量会根据查询缓存的情况进行递增。查询缓存命中率的计算公式:Qcache_hitsQcache_hitsCom_select,根据公式计算得出查询缓r