Por que o cache do plano contém planos de execução estimados e não reais?

8

Posso pensar em várias razões por trás dessa decisão de armazenar planos estimados no cache do plano e não no plano real. Mas não consigo encontrar a resposta "correta".

manish
fonte

Respostas:

12

Pense no que "real" significa. É o que realmente acontece para a execução desse plano.

Outro nome comum para o plano de execução real é o "plano de pós-execução" . Como exemplo do mundo real para correlacionar esse cenário, diga que você planeja fazer uma viagem de cross-country, para planejar as estradas que vai seguir e quanto tempo acha que vai levar. Mas por causa do trabalho na estrada e dos desvios, isso não acontece exatamente como você planejou. Esse é o plano de execução real: a rota real que você seguiu para chegar aonde está indo. O plano estimado teria sido o que você pensou que faria e o caminho que achou que deveria seguir.

Você não pode armazenar planos de pós-execução porque eles são exatamente isso .... pós-execução . Eles contêm métricas do que realmente aconteceu, não do que o SQL Server acha que deveria acontecer (plano de execução estimado).

O cache do plano é realmente apenas um repositório de "mapas" que pode ser reutilizado sem ter que gastar o tempo dispendioso para elaborar um novo . Os planos de execução reais são posteriores ao fato e o cache do plano deve ser manipulado antes do fato .

Thomas Stringer
fonte