Le percentuali di costo in questo piano di SQL Server superano il 100% per un motivo valido?


13

Sto cercando nella cache del piano, cercando un frutto di ottimizzazione a basso impatto e mi sono imbattuto in questo frammento:

inserisci qui la descrizione dell'immagine

Perché molti dei costi sono elencati al di sopra del 100%? Non dovrebbe essere impossibile?


Ho anche visto costi fino all'1% in meno dal piano stimato. Basta usare il costo reale, dovrebbe essere migliore.
Marian,

5
Perché la matematica di SQL Server è incasinata. Prendi il nostro Plan Explorer gratuito ; non abbiamo questo problema.
Aaron Bertrand

Amo SQL Sentry Plan Explorer, Aaron - lo sto usando da un po 'di tempo. Voglio vedere cosa fa la versione pro!
Max Vernon,

Risposte:


12

Lo stimatore visivo dei costi è una schifezza. Questo genere di cose succede sempre. Basta andare con i più alti sono i più costosi e attaccarli per primi.


L'hai mai visto con le versioni precedenti di SQL Server? Per quanto mi riguarda, non l'ho mai notato su SS 2008R2 per esempio.
KookieMonster,

5
L'ho visto risalire a SQL 2000. Per quanto ne so è solo un bug in SSMS (ed EM) quando sta facendo i calcoli per capire le percentuali.
mrdenny,

2

Ero anche curioso di sapere perché a volte alcuni costi vengono visualizzati come 100%, 200%, 300% ... e anche di più. Dopo aver analizzato il file xml del piano di query, l'ho capito.

La percentuale di costo = EstimatedTotalSubtreeCostnodo my / parentEstimatedTotalSubtreeCost

Ad esempio, il tuo piano di query mostra Clustered Index Insertun costo del 914%, per capire come calcola questa percentuale, 1. Move mouse to `Clustered Index Insert` to show popup, you can see the cost `EstimatedTotalSubtreeCost`, e.g, 0.2 2. Move mouse to this node's parent node `COND WITH QUERY`, check the popup to get `EstimatedTotalSubtreeCost`, e.g, 0.0218818 3. Calculate 0.2/0.0218818 = 914%, this is the cost percentage displayed in `Clustered Index Insert` popup


1
0.002/2.18è 0.000917(che è lo stesso di 0.0917%) e non 914%.
ypercubeᵀᴹ

Grazie per il tuo commento. Modificherò la mia risposta. Dopotutto, è solo un esempio per mostrare come calcolare la percentuale.
osexp2003,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.