Mariadb 查询缓存

Mariadb查询缓存

查询缓存:

如何判断是否命中?
通过查询语句的哈希值判断,哈希值考虑的因素包括:
	查询本身、要查询的数据库、客户端使用协议版本、...
	查询语句在字符上有任何的不同,都会导致缓存不能命中
哪些查询不能被缓存?
	查询中包括了UDF(User-Define-Function)、存储函数、用户自定义变量、
	临时表、mysql库中系统表
	或者包含列级别权限的表(不同用户可能查询出来的结果不同)、不确定函数(Now())

查询相关的服务器变量

SHOW GLOBAL VARIABLES LIKE "%query%";
---->
+------------------------------+----------------+
| Variable_name                | Value          |
+------------------------------+----------------+
| expensive_subquery_limit     | 100            |
| ft_query_expansion_limit     | 20             |
| have_query_cache             | YES            |
| long_query_time              | 10.000000      |
| query_alloc_block_size       | 8192           |
| query_cache_limit            | 1048576        |
| query_cache_min_res_unit     | 4096           |
| query_cache_size             | 0              |
| query_cache_strip_comments   | OFF            |
| query_cache_type             | ON             |
| query_cache_wlock_invalidate | OFF            |
| query_prealloc_size          | 8192           |
| slow_query_log               | OFF            |
| slow_query_log_file          | node2-slow.log |
+------------------------------+----------------+
query_cache_min_res_unit:查询缓存中内存块最小的分配单位
	较小值会减少内存浪费,但会导致频繁的内存分配操作
	较大值会带来浪费,会导致碎片过多
query_cache_limit:能缓存的最大查询结果
	对着有较大结果的查询语句,建议在SELECT中使用SQL_NO_CACHE
query_cache_size:查询缓存总体占有的内存空间,单位是字节,必须是1024的整数倍
query_cache_type:ON|OFF|DEMAND  demand表示只有明确指出SQL-CACHE时才缓存
query_cache_wlock_invalidate:如果某表被其他连接锁定,是否任然从缓存中返回结果;
	默认为OFF,表示可以在表被其他连接锁定时继续从缓存中返回数据,ON则表示不允许

查询缓存一些调优方式和流程:
在这里插入图片描述

查询状态的相关变量

SHOW GLOBAL STATUS LIKE "Qcache%";
+-------------------------+-------+
| Variable_name           | Value |
+-------------------------+-------+
| Qcache_free_blocks      | 0     |
| Qcache_free_memory      | 0     |
| Qcache_hits             | 0     |
| Qcache_inserts          | 0     |
| Qcache_lowmem_prunes    | 0     |
| Qcache_not_cached       | 0     |
| Qcache_queries_in_cache | 0     |
| Qcache_total_blocks     | 0     |
+-------------------------+-------+

Qcache_inserts:可缓存查询语句的结果被写入缓存的次数
Qcache_lowmem_prunes:有多少次是因为我们的查询空间太小,而不得不使用LRU清理缓存的次数
Qcache_not_cached:可缓存却没能缓存
Qcache_queries_in_cache:在当前的缓存空间中,被缓存下来的查询语句的个数
Qcache_total_blocks:有多少内存块

评估缓存命中率:
Qcache_hits/(Qcache_hits+Com_select)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值