在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

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

106次阅读
没有评论

共计 2137 个字符,预计需要花费 6 分钟才能阅读完成。

自动写代码机器人,免费开通

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

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

向 AI 问一下细节

丸趣 TV 网 – 提供最优质的资源集合!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-18发表,共计2137字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 深爱五月开心网亚洲综合 | 性生潮久久久不久久久久 | 欧美做受又硬又粗又大视频 | 在线天堂中文www视软件 | 在线看免费毛片 | 太大太粗太硬好爽受不了视频 | 他掀开裙子把舌头伸进去添视频 | 国产精品99无码一区二区 | 国产一区二区在线视频观看 | 欧美一区二区三区久久综 | 免费观看添你到高潮视频 | 欧美特黄一免在线观看 | 国产欧美一区二区三区精品 | 国产成人免费观看 | 日韩中文字幕免费 | 风流少妇又紧又爽又丰满 | 国产一国产一有一级毛片 | 日韩国产欧美成人一区二区影院 | a级毛片在线免费观看 | 亚洲视频自拍偷拍 | 王丽坤一级毛片免费观看 | 国产亚洲精品久久久久5区 国产亚洲精品久久久久的角色 | 国产精品99久久久精品无码 | 亚洲欧美在线一区二区 | 免费在线观看黄色小视频 | 亚洲国产区男人本色 | 成年人黄色毛片 | 在线视频你懂的国产福利 | 日韩精品一区二区午夜成人版 | 思思久久99热只有精品 | 欧美日韩一区二区视频免费看 | 黄网站视频在线观看 | 无码精品人妻一区二区三区人妻斩 | 日韩精品成人无码专区免费 | 狠狠操在线视频 | 午夜影视在线视频观看免费 | 久久婷婷色香五月综合缴缴情 | 久久这里只有精品免费看青草 | 久久久在线视频 | 久久精品人人做人人爽电影蜜月 | 日产精品久久久久久久 |