同一条SQL为何执行计划会突然变化:从参数嗅探到多计划缓存的技术突围

想象这样一个场景:你的生产环境中有一个存储过程,平时执行只需几百毫秒,突然某天开始,同样的调用却需要几分钟甚至更长时间。你检查了服务器资源——CPU、内存、磁盘IO都正常。你把存储过程中的SQL语句单独拎出来执行,发现跑得飞快。你尝试ALTER一下存储过程(什么代码都没改),问题竟然消失了。 ...

13 min · 6089 words

查询优化器的致命误判:为什么数据库有时会选错执行计划

2015年,慕尼黑工业大学的研究团队做了一个实验:他们把PostgreSQL查询优化器的基数估计值全部替换成真实值,然后观察113个复杂查询的执行时间变化。 ...

8 min · 3706 words