MySQL缓存
MySQL缓存机制即缓存sql 文本及缓存结果,用Key-Value形式保存再服务器内存中,如果运行相同的sql,服务器直接从缓存中去获取结果,不需要再去解析、优化、执行sql,可以大大提高查询的性能
参数设置
(1) have_query_cache表示是否支持查询缓存,YES表示支持
(2) query_cache_type表示缓存类型,OFF表示关闭查询缓存,ON表示开启查询缓存,DEMAND表示用户自定 义查询缓存
查询缓存使用
(1) 只有字符串相等查询sql才使用相同缓存,即select name from city与SELECT name FROM city不使用同一 个缓存
(2) 在query_cache_type为ON的情况下,默认所有查询都使用缓存
我们可以使用
(3) 在query_cache_type为DEMAND的情况下
需要使用sql_cache指定某个查询使用缓存select sql_cache name from city;
MySQL缓存失效
-
在表的结构或数据发生改变时,查询缓存中的数据不再有效,查询缓存值的相关条目将被清空
-
INSERT、UPDATE、 DELETE、TRUNCATE、ALTER TABLE、DROP TABLE或DROP DATABASE会导致缓存数据失效
工作流程
-
服务器接收SQL,以SQL、数据库名和客户端协议等作为key查找缓存表
-
如果缓存命中,则直接返回缓存
-
如果缓存没有命中,则执行SQL查询,包括SQL解析、优化等。
-
执行完SQL查询结果以后,将SQL查询结果写入缓存表
使用场景
-
对于频繁更新的表,查询缓存不合适
-
对于一些不变的数据且有大量相同sql查询的表,查询缓存可以大大提高查询的性能
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!