Différences entre les plans d'exécution estimés et réels

8

Je suis nouveau sur SQL Server et je souhaite régler ma première requête.

Dans SQL Server 20xx, quelle est la différence entre «afficher le plan d'exécution estimé» et «inclure le plan d'exécution réel»?


la source

Réponses:

6

Le plan d'exécution estimé est généré uniquement sur la base des statistiques de SQL Server - sans réellement exécuter la requête. Il est simplement demandé à l'optimiseur de requête ce qu'il ferait le plus probablement avec cette requête, sur la base de toutes les informations qu'il possède sur la requête et les distributions de données, etc.

Cela fonctionne bien, la requête n'a pas besoin d'être exécutée (ce qui pourrait prendre beaucoup de temps), mais si les statistiques sont obsolètes, le plan peut être gravement faussé.

Le plan d'exécution réel n'est que cela - le plan d'exécution réel qui a été utilisé lors de l'exécution de la requête. Cela vous montrera des choses qui pourraient faire allusion à des statistiques «obsolètes», etc. Mais pour cela, vous devez exécuter la requête - ce qui peut prendre beaucoup de temps.

marc_s
la source
1
J'aurais pensé que la seule vraie question ici est de savoir dans quels cas le plan réel n'est pas le plan estimé. Le reste est évident, n'est-ce pas?
John
une question rapide après le passage via l'optimiseur de requêtes et lors de l'exécution des requêtes, si le plan mis en cache est obsolète, l'étape d'optimisation des requêtes réexécutera-t-elle la mise à jour des statistiques? ou existe-t-il un autre moyen de générer un plan d'exécution?
brykneval
1

Le plan estimé vous fournira comment votre requête s'exécutera sur le serveur sans réellement l'exécuter. Cela vous donnera une idée si vous devez régler pour créer un meilleur plan ou si le plan estimé semble correct.

Le plan réel montre ce qui s'est réellement passé lorsque le serveur a exécuté la requête. Il inclut des détails tels que le nombre réel de lignes d'une table, la quantité de mémoire utilisée en cas de tri et le degré de parallélisme utilisé lors de l'exécution.

Mais la meilleure chose serait de regarder la différence entre le "nombre estimé de lignes" et le "nombre réel de lignes" que vous pouvez voir dans le plan d'exécution réel. Plus ces deux valeurs sont proches, plus les statistiques sont à jour et pour des statistiques données, c'est le meilleur plan. Dans ce cas, la mise à jour des statistiques aidera à générer un meilleur plan estimé et donc un plan réel.

Gulli Meel
la source