加载中...

执行计划缓存(Plan Cache)指数据库把 SQL 解析与优化的产物(执行计划)缓存起来,当相同或参数化后相同的语句再次到来时直接复用,避免重复的硬解析与优化开销。
高并发 OLTP 系统中,同构 SQL 只是参数不同,而解析优化本身消耗 CPU 且可能引发内部争用。数据库将语句文本(或参数化模板)作为键缓存计划:Oracle 的库缓存区分硬解析与软解析,配合绑定变量使用;SQL Server 对即席查询做自动参数化;MySQL 8.0 移除了争用严重的 Query Cache(缓存结果集,与计划缓存不同),预处理语句则在会话内复用计划;PostgreSQL 对预处理语句默认前五次按参数定制计划,之后视代价切换到通用计划。
计划缓存的经典副作用是参数嗅探/计划失配:按首次参数生成的计划对倾斜分布的其他参数并不合适。缓解手段包括按参数重新优化、自适应游标共享(Oracle)、OPTIMIZE FOR 提示或禁用缓存。
计划缓存与绑定变量是 OLTP 性能调优的基础项,也是理解"同一条 SQL 时快时慢"现象的关键。

登录 后参与讨论
暂无讨论,来发表第一条评论吧