¿Por qué el caché del plan contiene planes de ejecución estimados y no reales?

8

Puedo pensar en muchas razones detrás de esta decisión de almacenar planes estimados en la memoria caché del plan y no en el plan real. Pero no puedo encontrar la respuesta "correcta".

viril
fuente

Respuestas:

12

Piensa en lo que significa "real". Es lo que realmente sucede para la ejecución de ese plan.

Otro nombre común para el plan de ejecución real es el "plan posterior a la ejecución" . Como un ejemplo del mundo real para correlacionar este escenario, digamos que planea hacer un viaje a campo traviesa, de modo que planifique los caminos que tomará y cuánto tiempo cree que tomará. Pero debido al trabajo en la carretera y los desvíos, no sucede exactamente como lo planeó. Ese es el plan de ejecución real: la ruta real que tomaste para llegar a donde vas. El plan estimado habría sido lo que pensabas que estarías haciendo, y qué ruta creías que deberías tomar.

No puede almacenar planes posteriores a la ejecución porque son solo eso ... post ejecución . Contienen métricas de lo que realmente sucedió, no de lo que SQL Server cree que debería suceder (plan de ejecución estimado).

El caché del plan es realmente solo un repositorio de "mapas" que puede reutilizar sin tener que gastar el tiempo costoso para elaborar uno nuevo . Los planes de ejecución reales son posteriores al hecho , y la caché del plan debe manejarse antes del hecho .

Thomas Stringer
fuente