都知道函数在使用前需要弄清楚参数的属性,这样才能对函数的使用有较好的了解。有些小伙伴学习了查询缓存后,直接进行了下一步的实战操作。这里小编想提醒大家,开始操作之前一定要先设置参数,不然就会出现问题。下面我们来完整的讲一下mysql查询缓存的步骤以及缓存失效的分析。

1.配置参数

(1) have_query_cache表示是否支持查询缓存,YES表示支持

(2) query_cache_type表示缓存类型,OFF表示关闭查询缓存,ON表示开启查询缓存,DEMAND表示用户自定义查询缓存

(3) query_cache_limit表示支持的最大单条查询sql数据量

(4) query_cache_min_res_unit表示查询缓存最小单位

(5) query_cache_size表示查询缓存空间大小

(6) query_cache_wlock_invalidate表示查询缓存是否支持写锁,OFF表示不支持,即读取数据不考虑写锁,ON表示支持,即读取数据会被写锁阻塞

MySQL的查询缓存默认是关闭的,需要手动配置参数query cache type,来开启查询缓存。query cache type该参数的可取值有三个 :

1)OFF或0 :查询缓存功能关闭;

2)ON或1 :查询缓存功能打开,SELECT的结果符合缓存条件即会缓存,否则,不予缓存,显示指定SQL_NO_CACHE,不予缓存

3)DEMAND或2 :查询缓存功能按需进行,显示指定SQL_CACHE的SELECT语句才会缓存;其他均不予缓存。

在/usr/my.cnf配置中,增加以下配置 :

2.开启mysql的查询缓存

query_cache_type=1

配置完毕之后,重启服务即可生效;

然后就可以在命令行执行SQL语句进行验证,执行一条比较耗时的SQL语句,然后再多执行几次,查看后面几次的执行时间;获取通过查看查询缓存的缓存命中数,来判定是否走查询缓存。

查询缓存使用

(1) 只有字符串相等查询sql才使用相同缓存,即select name from city与SELECT name FROM city不使用同一个缓存。

(2) 在query_cache_type为ON的情况下,默认所有查询都使用缓存,我们可以使用sql_no_cache显示指定某个查询不使用缓存

select sql_no_cache name from city;

(3) 在query_cache_type为DEMAND的情况下,需要使用sql_cache指定某个查询使用缓存

select sql_cache name from city;

3.缓存失效:

在表的结构或数据发生改变时,查询缓存中的数据不再有效。如INSERT、UPDATE、 DELETE、TRUNCATE、ALTER TABLE、DROP TABLE或DROP DATABASE会导致缓存数据失效。所以查询缓存适合有大量相同查询的应用,不适合有大量数据更新的应用。

一旦表数据进行任何一行的修改,基于该表相关cache立即全部失效。

以上就是我们在mysql进行查询缓存需要进行的步骤,在参数的设置方面再次提醒大家。如果缓存失效小伙伴们也不要着急,对应小编的分析找找方法。

mysql query 查询失败_如何在mysql进行查询缓存及失败的解决方法相关推荐

  1. mysql 记录 行号_如何在MySQL查询结果集中得到记录行号

    如果需要在查询语句返回的列中包含一列表示该条记录在整个结果集中的行号, ISO SQL:2003 标准提出的方法是提供 ROW_NUMBER() / RANK() 函数. Oracle 中可以使用标准 ...

  2. function在mysql里总是出错_如何在MySQL函数中引发错误

    如何在MySQL函数中引发错误 我创建了一个MySQL函数,如果传递给参数的值无效,则想引发一个错误. 在MySQL函数中引发错误我有哪些选择? 6个解决方案 69 votes MySQL 5.5引入 ...

  3. 如何在mysql中创建过程_如何在MySQL 中创建存储过程?

    问题阐述 自MySQL 5.0 开始,MySQL 就支持存储过程.存储过程是一些被用户定义的SQL 语句集合.一个存储程序是可以被存储在服务器中的一套SQL 语句.存储过程可以被程序.触发器或另一个存 ...

  4. mysql怎么插入时间_如何在MySQL中插入日期?

    在MySQL中插入日期的方法:首先打开脚本文件:然后通过[INSERT INTO tablename (col_name, col_date) VALUE ('DATE: Auto CURDATE() ...

  5. 如何合并mysql中的行_如何在MySQL中合并行?

    要合并MySQL中的行,请使用GROUP_CONCAT(). 让我们首先创建一个表-mysql> create table DemoTable734 ( Id int, Name varchar ...

  6. mysql数据库存歌_如何在mysql中存储音乐和图片文件

    标签: 如何在mysql中存储音乐和图片文件? 果你想把二进制的数据,比如说图片文件和HTML文件,直接保存在你的MySQL数据库,那么这篇文章就是为你而写的! 我将告诉你怎样通过HTML表单来储存这 ...

  7. MySQL怎么展示表格_如何在MySQL数据库中显示表的架构?

    从MySQL控制台,什么命令显示任何给定表的架构? #1楼 SHOW CREATE TABLE yourTable; 要么 SHOW COLUMNS FROM yourTable; #2楼 descr ...

  8. 如何在mysql中创建连接_如何在MySQL中创建新用户并开启远程连接访问?

    如何在MySQL中创建新用户并开启远程连接访问? 发布时间:2020-05-21 14:55:19 来源:亿速云 阅读:176 作者:鸽子 下面由mysql教程给大家介绍MySQL创建新用户并开启远程 ...

  9. php mysql query 行数_如何在PHP中获取MYSQL数据库返回的数据的行数?

    展开全部 1. mysql_num_rows 可得到e69da5e887aa3231313335323631343130323136353331333337383861查询记录数<?php $c ...

最新文章

  1. OpenCV 3.1.0中的Mat对象使用
  2. CSS学习16之层级
  3. 找钢网王东:3年赚900亿他是怎么做到的?
  4. 笔记-项目立项管理-项目建议书
  5. 大话数据结构05: 双向链表
  6. spring 事务_极限 Spring (4) Spring 事务
  7. 回顾InfoGAN与隐变量
  8. cookie和session的区别及其原理
  9. PDF文档只能读,不能修改和复制怎么办?
  10. 基于仿真软件multisim14的多路抢答器电路设计
  11. 自己制作深度学习数据集教程
  12. 理解Base64编码及实现编解码Base64
  13. 洛洛阅读—自己写的简约Android小说阅读器背景
  14. android N编译
  15. 注册Apple ID
  16. 举个栗子!Tableau 技巧(127):购物篮分析 Market Basket Analysis 之关联购买
  17. ARP协议(三)ARP防御篇
  18. Android应用双开供系统在主副屏展示使用总结及问题总结
  19. UIColor延伸:判断两个颜色是否相等
  20. Codewars一些积累No.3 从罗马数字编码器来初探string的实用用法

热门文章

  1. TensorFlow的基本运算01-01
  2. Jquery封装(学习)01
  3. SPF Tarjan算法求无向图割点(关节点)入门题
  4. Closing Spring root WebApplicationContext
  5. 三、查找、替换、定位
  6. php顺序、二分查找
  7. pandas 按日期范围筛选数据的实现
  8. ‘numpy.float64‘ object is not callable
  9. spyder jupyter集成
  10. 混合编码种群来进化的最大化目标的单目标优化问题