关于mysql中查询缓存

查询缓存:可以降低数据库服务器的使用率
mysql的查询缓存是内置的一种缓存机制,可以针对sql进行缓存,sqk必须完全相同,空格,大小写,字符集,协议。表结构,数据发生改变都将导致所有缓存失效,查询缓存中sql不可以包含动态数据如:  now()
SHOW VARIABLES LIKE '%query_cache%';
have_query_cache yes
query_cache_limit 1000    不缓存大于该值的结果
query_cache_min_res_unit 1000    查询缓存分配块的最小尺寸
query_cache_size 1000    查询缓存保留的内存大小,set global query_cache_size=1000;
query_cache_type    off关闭缓存,   on 总是打开缓存,  demand 明确写入sql_cache查询时才写入缓存,需要修改配置文件,my.cnf
query_cache_wlock_invalidate off

查看缓存使用情况:
show status like 'qcache%';
Qcache_free_blocks 83             缓存中相邻内存块的个数。数目大说明可能有碎片。FLUSH QUERY CACHE会对缓存中的碎片进行整理,从而得到一个空闲块。
Qcache_free_memory 10                 缓存中的空闲内存。
Qcache_hits 10                   查询命中数
Qcache_inserts 5                     插入到缓存中的查询总数
Qcache_lowmem_prunes 5            数字在不断增长,就表示可能碎片非常严重,或者内存很少
Qcache_not_cached 7         没有被缓存的次数,通常是由于这些查询不是 SELECT 语句或者用了now()之类的函数。
Qcache_queries_in_cache 11    当前缓存的查询数量。
Qcache_total_blocks 10       缓存中块的数量


可以清理查询缓存:
flush query cache 清理查询缓存内存碎片,不从缓存中移除任何查询
reset query cache 从查询缓存中移除所有查询

select sql_no_cache * from user;
select sql_cache * from user;

(文中所提是看的别人写的博客中所写加上自己测试)

猜你喜欢

转载自www.cnblogs.com/wl-sjy/p/9077762.html
今日推荐