如何在mysql进行查询缓存及失败的解决方法

这篇文章主要介绍了如何在mysql进行查询缓存及失败的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

都知道函数在使用前需要弄清楚参数的属性,这样才能对函数的使用有较好的了解。有些小伙伴学习了查询缓存后,直接进行了下一步的实战操作。这里小编想提醒大家,开始操作之前一定要先设置参数,不然就会出现问题。下面我们来完整的讲一下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显示指定某个查询不使用缓存

query_cache_type=1

(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进行查询缓存需要进行的步骤,在参数的设置方面再次提醒大家。如果缓存失效小伙伴们也不要着急,对应小编的分析找找方法。

来源:脚本之家

链接:https://www.jb51.net/article/205124.htm

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:SEO优化专员,转转请注明出处:https://www.chuangxiangniao.com/p/894805.html

(0)
上一篇 2025年1月4日 00:09:01
下一篇 2025年1月4日 00:09:32

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • MYSQL中char和varchar的区别

    这篇文章主要介绍了MYSQL中 char 和 varchar的区别,帮助大家更好的理解和使用MySQL数据库,感兴趣的朋友可以了解下 CHAR和VARCHAR类型相似,差别主要在存储,尾随空格和检索方式上。 CHAR和VARCHAR相同的是…

    2025年1月4日
    100
  • MySQL8.0如何快速加列

    这篇文章主要介绍了MySQL8.0 如何快速加列,帮助大家更好的理解和使用MySQL数据库,感兴趣的朋友可以了解下 前言: 很早就听说 MySQL8.0 支持快速加列,可以实现大表秒级加字段。笔者自己本地也有8.0环境,但一直未进行测试。本…

    2025年1月4日
    300
  • 聊聊MySQL中的参数

    这篇文章主要介绍了MySQL中的参数是什么,帮助大家更好的理解和使用MySQL数据库,感兴趣的朋友可以了解下 前言: 在前面一些文章中,经常能看到介绍某某参数的作用,可能有些小伙伴仍搞不清楚 MySQL 参数是啥。本篇文章我们来聊聊 MyS…

    数据库 2025年1月4日
    100
  • MySQL中的悲观锁与乐观锁

    这篇文章主要介绍了MySQL中悲观锁与乐观锁的相关资料,帮助大家更好的理解和学习MySQL数据库,感兴趣的朋友可以了解下 在关系型数据库中,悲观锁与乐观锁是解决资源并发场景的解决方案,接下来将详细讲解

    数据库 2025年1月4日
    100
  • MySQL的自增ID(主键) 用完了的解决方法

    这篇文章主要介绍了MySQL的自增ID(主键) 用完了的解决方法,帮助大家更好的理解和学习MySQL数据库,感兴趣的朋友可以了解下 在 MySQL 中用很多类型的自增 ID,每个自增 ID 都设置了初始值。一般情况下初始值都是从 0 开始,…

    数据库 2025年1月4日
    100
  • MySQL选择合适的存储引擎

    这篇文章主要介绍了MySQL如何选择合适的存储引擎,帮助大家更好的理解和使用MySQL数据库,感兴趣的朋友可以了解下 对于数据库这一块询问比较多的就是在 MySQL 中怎么去选择一种何时当前业务需求的存储引擎,而 MySQL 中支持的存储引…

    2025年1月4日
    100
  • Mysql脏页flush及收缩表空间原理解析

    这篇文章主要介绍了Mysql脏页flush及收缩表空间原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 mysql脏页 由于WAL机制,InnoDB在更新语句的时候,制作了写日志这一…

    2025年1月4日 数据库
    100
  • Mysql读写分离过期常用解决方案

    这篇文章主要介绍了Mysql读写分离过期常用解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 mysql读写分离的坑 读写分离的主要目标是分摊主库的压力,由客户端选择后端数据库进行查…

    2025年1月4日
    100
  • mysql常用备份命令和shell备份脚本分享

    这篇文章主要介绍了mysql常用备份命令和shell备份脚本,帮助大家更好的理解和使用MySQL数据库,感兴趣的朋友可以了解下 备份多个数据库可以使用如下命令: mysqldump -uroot -p123456 –databa…

    数据库 2025年1月4日
    100
  • Mysql误删数据解决方案及kill语句原理

    这篇文章主要介绍了Mysql误删数据解决方案及kill语句原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 mysql误删数据 使用delete语句误删数据行 使用drop table或…

    2025年1月4日 数据库
    100

发表回复

登录后才能评论

联系我们

156-6553-5169

在线咨询: QQ交谈

邮件:253000106@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

联系微信