MySQL查询缓存

查询缓存

  1. 优点:(1)对于某些频繁出现的查询语句,可以减少I/O。
  2. 缺点:(1)查询缓存需要占用一定的内存。(2)每次查询执行前都要先检查缓存,故不一定是有利的。
  3. 缓存未命中的原因:(1)查询不在缓存中 (2)缓存失效 (3) 查询中包含不确定的函数,比如current_date。因此如果查询希望使用缓存,就直接使用当时时间的字面量,比如‘2018-1-29’这种即可。
  4. 缓存失效:(1)在InnoDB中,如果一个事务对表进行了修改,那在事务提交前,缓存都会失效。 (2)产生了大量碎片,因为缓存使用的分配算法是最佳分配算法(最合适的大小分给它,易产生碎片,可以通过选择合适的块大小来减少这种情况)

 调优手段

  1. 前面提到每次查询都会先检查缓存。如果需要缓存的查询很少,可以将query_cache_type设置为demand,然后对需要缓存的查询后面添加sql_cache。这样可以更细粒度的控制缓存的使用
  2. 如果写入操作很多(前面提到修改表的时候会使缓存失效),这个时候可以禁用缓存,并将缓存大小query_cache_size设置为0,这样就不会占用内存。
  3. 基于上一条,如果两者都要,那么就让写操作成批量的执行,而不是逐个执行。

  调优参数

  1. query_cache_type:既是会话级变量也是全局性变量。有on/off/demand三个属性
  2. query_min_cache_res_unit:设置分配缓存最小块大小。
  3. query_cache_limit:限制缓存存储的最大结果,超过不会被缓存




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值