mysql调优(二)启用慢速日志查询和缓存
时间:2010-09-10 来源:mic0601
启用 MySQL 慢速查询日志在/etc/my.cnf中的[mysqld]下添加
log-slow-queries=/var/lib/mysql/host-slow.log 指定日志文件路径
log_query_time = 2 记录执行超过2秒会记录日志
阅读慢速查询日志最好是通过 mysqldumpslow命令进行 格式:mysqldumpslow [参数] 日志名称
如:mysqldumpslow -s c -t 20 host-slow.log
-s,是order的顺序,说明写的不够详细,俺用下来,包括看了代码,主要有c,t,l,r和ac,at,al,ar,分别是按照query次数,时间,lock的时间和返回的记录数来排序,前面加了a的时倒叙
-t,是top n的意思,即为返回前面多少条的数据
-g,后边可以写一个正则匹配模式,大小写不敏感的 对查询进行缓存
查询缓存在默认情况下是禁用的
将 query_cache_size = 32M 添加到 /etc/my.conf 中可以启用32MB 的查询缓存 显示查询缓存的统计信息
mysql> show status like 'qcache%';
+-------------------------+----------+
| Variable_name | Value |
+-------------------------+----------+
| Qcache_free_blocks | 1 |
| Qcache_free_memory | 33519656 |
| Qcache_hits | 43 |
| Qcache_inserts | 35 |
| Qcache_lowmem_prunes | 0 |
| Qcache_not_cached | 5 |
| Qcache_queries_in_cache | 15 |
| Qcache_total_blocks | 40 |
+-------------------------+----------+
8 rows in set (0.00 sec) | Qcache_free_blocks 缓存中相邻内存块的个数。数目大说明可能有碎片。FLUSH QUERY CACHE 会对缓存中的碎片进行整理,从而得到一个空闲块。 | Qcache_free_memory 缓存中的空闲内存。 | Qcache_hits 每次查询在缓存中命中时就增大。 | Qcache_inserts 每次插入一个查询时就增大。命中次数除以插入次数就是不中比率;用 1 减去这个值就是命中率。 | Qcache_lowmem_prunes 缓存出现内存不足并且必须要进行清理以便为更多查询提供空间的次数。这个数字最好长时间来看;如果这个数字在不断增长,就表示可能碎片非常严重,或者内存很少。(上面的 free_blocks 和 free_memory 可以告诉您属于哪种情况)。 | Qcache_not_cached 不适合进行缓存的查询的数量,通常是由于这些查询不是 SELECT 语句。 | Qcache_queries_in_cache 当前缓存的查询(和响应)的数量。 | Qcache_total_blocks 缓存中块的数量。
log-slow-queries=/var/lib/mysql/host-slow.log 指定日志文件路径
log_query_time = 2 记录执行超过2秒会记录日志
阅读慢速查询日志最好是通过 mysqldumpslow命令进行 格式:mysqldumpslow [参数] 日志名称
如:mysqldumpslow -s c -t 20 host-slow.log
-s,是order的顺序,说明写的不够详细,俺用下来,包括看了代码,主要有c,t,l,r和ac,at,al,ar,分别是按照query次数,时间,lock的时间和返回的记录数来排序,前面加了a的时倒叙
-t,是top n的意思,即为返回前面多少条的数据
-g,后边可以写一个正则匹配模式,大小写不敏感的 对查询进行缓存
查询缓存在默认情况下是禁用的
将 query_cache_size = 32M 添加到 /etc/my.conf 中可以启用32MB 的查询缓存 显示查询缓存的统计信息
mysql> show status like 'qcache%';
+-------------------------+----------+
| Variable_name | Value |
+-------------------------+----------+
| Qcache_free_blocks | 1 |
| Qcache_free_memory | 33519656 |
| Qcache_hits | 43 |
| Qcache_inserts | 35 |
| Qcache_lowmem_prunes | 0 |
| Qcache_not_cached | 5 |
| Qcache_queries_in_cache | 15 |
| Qcache_total_blocks | 40 |
+-------------------------+----------+
8 rows in set (0.00 sec) | Qcache_free_blocks 缓存中相邻内存块的个数。数目大说明可能有碎片。FLUSH QUERY CACHE 会对缓存中的碎片进行整理,从而得到一个空闲块。 | Qcache_free_memory 缓存中的空闲内存。 | Qcache_hits 每次查询在缓存中命中时就增大。 | Qcache_inserts 每次插入一个查询时就增大。命中次数除以插入次数就是不中比率;用 1 减去这个值就是命中率。 | Qcache_lowmem_prunes 缓存出现内存不足并且必须要进行清理以便为更多查询提供空间的次数。这个数字最好长时间来看;如果这个数字在不断增长,就表示可能碎片非常严重,或者内存很少。(上面的 free_blocks 和 free_memory 可以告诉您属于哪种情况)。 | Qcache_not_cached 不适合进行缓存的查询的数量,通常是由于这些查询不是 SELECT 语句。 | Qcache_queries_in_cache 当前缓存的查询(和响应)的数量。 | Qcache_total_blocks 缓存中块的数量。
相关阅读 更多 +