返回顶部
首页 > 资讯 > 数据库 >mysql数据库查询缓存原理详解
  • 537
分享到

mysql数据库查询缓存原理详解

2024-04-02 19:04:59 537人浏览 八月长安
摘要

这篇文章将为大家详细讲解有关Mysql数据库查询缓存原理详解,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。mysql数据库查询缓存原理是:1、缓存SELECT操作

这篇文章将为大家详细讲解有关Mysql数据库查询缓存原理详解,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

mysql数据库查询缓存原理是:1、缓存SELECT操作的结果集和sql语句,key为sql,value为查询结果集;2、如果新的SELECT语句到了,以这个sql为key去缓存中查询,如果匹配,就把缓存的结果集返回。

mysql数据库查询缓存原理是:

概述

查询缓存(Query Cache,简称QC),存储SELECT语句及其产生的数据结果。闲来无事,做一下这块的总结,也做个备忘!

超详细的mysql数据库查询缓存总结,值得收藏

mysql数据库查询缓存原理详解

工作原理

  • 缓存SELECT操作的结果集和SQL语句,key为sql,value为查询结果集;

  • 如果新的SELECT语句到了,以这个sql为key去缓存中查询,如果匹配,就把缓存的结果集返回;

  • 匹配标准:与缓存的SQL语句是否完全一样,sql中字母区分大小写以及中间的空格,简单理解为存储了一个key-value结构,key为sql,value为sql查询结果,匹配时使用Java的String的equals(),例如:

  • select age from user 与 select AGE from user不会匹配,因为大小写不同;

  • select age from use 与 select age from user不会匹配,因为空格不同;

  • sql两边的空格可忽略,可以认为是对key进行过trim操作之后再进行equals比较。

查看mysql设置参数

执行

show variables like '%query_cache%';

mysql数据库查询缓存原理详解

可以看到相关参数:

  • query_cache_type:0-不启用查询缓存;1-启用,2-启用,默认值为0;

  • query_cache_size:设置缓存区总大小,允许设置query_cache_size的值最小为40K,默认1M,推荐设置为:64M/128M;

  • query_cache_limit:限制缓存区最大能缓存的单条查询记录集大小,默认设置为1M

  • query_cache_type为1时,只要符合查询缓存的要求,客户端的查询语句和记录集都可以缓存起来,如果SQL中加上 SQL_NO_CACHE将不缓存;

  • query_cache_type为2时,只要SQL中添加了参数:SQL_CACHE,且符合查询缓存的要求,客户端的查询语句和记录集,则可以缓存起来。

查看缓存使用情况

show status like '%Qcache%%';

mysql数据库查询缓存原理详解

可以看到相关参数:

  • Qcache_hits:缓存命中次数;

  • Qcache_inserts:缓存中插入次数,每缓存一次加1,注意这个不是缓存数量;

开启查询缓存

设置选项query_cache_type = 1 ,同时设置query_cache_size = 67108864;

注:query_cache_size的值设置在100MB以内即可。在MySQL里查询缓存是由一个全局在控制,每次更新查询缓存的内存块都需要进行锁定。

关闭查询缓存

设置选项query_cache_type = 0,同时设置query_cache_size = 0。

适用场景

用于频繁提交同一个语句,并且该表数据变化不是很频繁的场景,例如一些静态页面,或者页面中的某块不经常发生变化的信息。

由于查询缓存需要缓存最新数据结果,因此表数据发生任何变化(insert、update、delete或其他可能产生数据变化的操作),都会导致查询缓存被刷新。因而,对于一个更新频率非常低而只读查询频率非常高的场景下,打开查询缓存还是比较有优势的。

不适用场景

查询缓存严格要求2次SQL请求要完全一样,包括SQL语句,连接的数据库、协议版本、字符集等因素都会影响。下面为查询缓存不适用的几个场景:

  • 子查询;

  • 过程、函数、触发器、event中调用的SQL,或者引用到这些结果的;

  • 查询中涉及一些特殊函数时,例如:BENCHMARK()、CURDATE()、CURRENT_TIME()、CURRENT_TIMESTAMP()、NOW()、SLEEP()、CONNECTioN_ID()、CURRENT_DATE()、CURRENT_USER()、PASSWORD()、RAND()、UUID()、ENCRYPT()、LAST_INSERT_ID()等等;

  • 查询涉及到mysql,infORMation_schema或performance_schema。

  • 类似SELECT…LOCK IN SHARE MODE、SELECT…FOR UPDATE、SELECT..INTO OUTFILE/DUMPFILE、SELECT * FROM ... WHERE autoincrement_col IS NULL的查询;

  • SELECT执行计划用到临时表;

  • 未引用任何表的查询,例如SELECT 1+2;

  • 查询产生了告警(warnings);

  • SELECT语句中存在SQL_NO_CACHE关键字;

  • 涉及到分区表。

关于mysql数据库查询缓存原理详解就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

您可能感兴趣的文档:

--结束END--

本文标题: mysql数据库查询缓存原理详解

本文链接: https://www.lsjlt.com/news/53040.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • mysql数据库查询缓存原理详解
    这篇文章将为大家详细讲解有关mysql数据库查询缓存原理详解,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。mysql数据库查询缓存原理是:1、缓存SELECT操作...
    99+
    2024-04-02
  • MySQL 查询缓存详解
    文章目录 MySQL 查询缓存介绍MySQL 查询缓存管理和配置MySQL 缓存机制缓存规则缓存机制中的内存管理 MySQL 查询缓存的优缺点优点缺点 MySQL 查询缓存对性能的影响总结 缓存是一个有效且实用的系统性能...
    99+
    2023-08-16
    mysql mysql查询缓存
  • MySQL数据库中怎么查询缓存
    这期内容当中小编将会给大家带来有关MySQL数据库中怎么查询缓存,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、缓存条件,原理MySQL Query Cache是用来缓...
    99+
    2024-04-02
  • MySQL数据库缓存原理是什么
    今天就跟大家聊聊有关MySQL数据库缓存原理是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。  MySQL数据库查询步骤有哪些  当MySQL收...
    99+
    2024-04-02
  • PHP怎么查询数据库数据缓存
    在Web开发中,查询数据库数据是一个常见的操作。对于频繁发生的查询操作,如果每次都向数据库发出请求,就会导致数据库压力增大,页面响应速度变慢,影响用户体验。为了解决这个问题,可以使用缓存技术,将经常查询的数据缓存在缓存服务器中,减轻数据库的...
    99+
    2023-05-14
  • 详解MySQL数据库千万级数据查询和存储
    目录百万级数据处理方案数据存储结构设计查询语句优化千万级数据处理方案数据存储结构设计数据库表主键设计MySQL面试题MySQL数据库千万级数据查询优化方案你用过MySQL那些存储引擎他们都有什么特点和区别?那他们都有...
    99+
    2022-05-14
    mysql 数据 mysql 存储 千万级 优化
  • MySQL数据库连接查询 join原理
    目录1、连接查询的分类2、交叉连接2.1、原理2.2、基本语法2.3、应用3、内连接3.1、原理3.2、基本语法3.3、应用4、外连接4.1、原理4.2、基本语法4.3、特点4.4、...
    99+
    2024-04-02
  • mysql中查询缓存的原理是什么
    mysql中查询缓存的原理是什么?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1、说明MYSQL的查询缓存本质上是缓存SQL的hash值和该SQL的查询结果,如果运行相同的...
    99+
    2023-06-15
  • 使用Java实现先查询缓存再查询数据库
    目录前言栗子思路分析原理介绍代码实现项目代码配置文件项目结构SpringBootQueryApplication.javaGoods.javaCacheSelector.j...
    99+
    2024-04-02
  • MySQL数据库查询进阶之多表查询详解
    目录一、多表查询1.引出2.笛卡尔积3. 笛卡尔积的解决方法二、多表查询分类1.等值连接和非等值连接2.自连接和非自连接3.内连接和外连接4.自然连接5.using连接三、子查询1....
    99+
    2024-04-02
  • MySql 缓存查询原理与缓存监控和索引监控介绍
    查询缓存 1.查询缓存操作原理 mysql执行查询语句之前,把查询语句同查询缓存中的语句进行比较,且是按字节比较,仅完全一致才被认为相同。如下,这两条语句被视为不同的查询 SELE...
    99+
    2024-04-02
  • Django使用原生SQL查询数据库详解
    Django 提供了两种方式来执行原生 SQL 代码。 一种是使用 raw() 函数,一种是 使用 connection.cursor()。 但是官方还是推荐在使用原生 SQL 之前...
    99+
    2023-05-15
    django使用原生SQL查询 django数据库增删改查 Django查询数据库
  • MySql数据库基础之子查询详解
    目录1. 什么是子查询2. 子查询可以出现在哪里3. where子句的子查询4. from子句的子查询5. select后面出现的子查询1. 什么是子查询 select 语句中嵌套 select 语句...
    99+
    2024-04-02
  • 三篇学会MySQL数据库【查询详解】
    作者:周棋洛 全文:三篇学会MySQL数据库【完整版】 简介:MySQL万字教程,从入门到精通,第二篇查询,第三篇讲讲解视图,存储过程,触发器,事物,维护,备份恢复等高级知识,单独写一篇是因为查询...
    99+
    2023-09-25
    mysql 数据库 database
  • Mysql数据库时间查询举例详解
    目录1、查询当前时间  年月日时分秒2、查询当前时间 前三小时 的时间点3、查询当前时间  前三天 的时间点4、查新当前时间 前三分钟&nb...
    99+
    2023-05-19
    mysql查询时间语句 sql 查询时间 MySQL 获取当前日期
  • mysql数据库查询基础命令详解
    目录1.启动数据库命令行客户端2.查询数据库3.进入数据库3.查询所在数据库中所有表信息4.查询数据库某张表结构5.简单select查询语句(单张表)5.1查询单张表所有数据5.2 LIMIT限制查询结果返回数...
    99+
    2022-11-19
    mysql数据库查询命令 mysql数据库查询 mysql数据库命令
  • Mysql数据库group by原理详解
    目录引言1. 使用group by的简单例子2. group by 原理分析2.1 explain 分析2.2 group by 的简单执行流程3. where 和 having的区别3.1 grou...
    99+
    2022-07-06
    Mysql数据库group by group by
  • Mysql数据库group by原理详解
    目录引言1. 使用group by的简单例子2. group by 原理分析2.1 explain 分析2.2 group by 的简单执行流程3. where 和 hav...
    99+
    2024-04-02
  • MySQL查询缓存优化示例详析
    目录一、概述二、查询优化内容1、查询缓存的原理2、查询缓存的优缺点3、不能应用查询缓存的内容4、查询缓存相关的服务器变量5、SELECT语句的缓存控制6、查询缓存相关的状态变量7、查询的优化的检查路线8、命中率和内存使用...
    99+
    2024-04-02
  • 如何使用SpringCache进行缓存数据库查询
    这篇文章给大家分享的是有关如何使用SpringCache进行缓存数据库查询的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。SpringCache进行缓存数据库查询1、在SpringBoot的启动类上添加注解@Ena...
    99+
    2023-06-25
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作