statistiche sql io spiegazione del conteggio delle scansioni
-
22-07-2019 - |
Domanda
Domanda semplice, ma non ho trovato una buona spiegazione su Google. Quando si utilizza Set Statistics IO ON, le letture logiche e il conteggio delle scansioni vengono forniti nella finestra dei messaggi di Management Studio. Se ho:
tblEsempio, conteggio scansioni 5, letture logiche 20
Cosa significa conteggio delle scansioni?
Soluzione
Dai libri online
Conteggio scansioni: Numero di scansioni dell'indice o della tabella eseguite.
letture logiche: Numero di pagine lette dalla cache di dati.
letture fisiche: Numero di pagine lette dal disco.
letture a lettura anticipata: Numero di pagine inserite nella cache per la query.
Vedi anche qui: http://technet.microsoft.com/en- us / library / ms184361.aspx
Altri suggerimenti
Per quanto riguarda una "scansione di tabella" significa , il migliore che ho trovato è questo:
Conteggio scansioni indica semplicemente quante volte alla tabella o all'indice è stato effettuato l'accesso durante la query. Può essere una scansione completa, una scansione parziale o semplicemente una ricerca.
In altre parole, il conteggio delle scansioni da solo non è informazioni sufficienti per procedere. Devi sapere esattamente quali erano quelle scansioni, quindi dovrai guardare il piano di esecuzione effettivo per maggiori dettagli. In conclusione, non è una metrica molto utile da sola!
Inoltre:
http: // www. eggheadcafe.com/software/aspnet/32171165/set-statistics-io-scan-count-explanation.aspx
Sfortunatamente, Conteggio scansioni in questi giorni non è molto informativo . Hm, beh, se vedi un numero come 19223, probabilmente è possibile accedere alla tabella attraverso un ciclo nidificato, unisciti più volte.
C'è stato un tempo in cui " conteggio scansioni " significava semplicemente " tabella orari accessibile " ;, ma è stato tanto tempo fa, forse in SQL 6.5. L'unica volta che potresti ottenere un conteggio delle scansioni con quella definizione di 0 è con una query come ...
select * from TestA1 where CompanyID = 1 and CompanyID = 2
... in cui SQL Server potrebbe essere in grado di concludere che la query non verrà restituita qualsiasi riga, senza accedere alla tabella.
Se continuare a raccogliere citazioni msdn. Quindi [1] che si ripete in [2]:
-
" Letture logiche
Questo valore indica il numero totale di accessi alla pagina necessari per elaborare la query. Ogni pagina viene letta dalla cache dei dati, indipendentemente dal fatto che fosse necessario o meno portare quella pagina dal disco nella cache per una determinata lettura . Questo valore è sempre almeno altrettanto grande e di solito maggiore del valore per Letture fisiche. La stessa pagina può essere letta più volte (ad esempio quando una query è guidata da un indice), quindi il conteggio delle letture logiche per una tabella può essere maggiore del numero di pagine in una tabella. Letture fisiche
Questo valore indica il numero di pagine che sono state lette dal disco; è sempre inferiore o uguale al valore di Letture logiche. Il valore dell'hit ratio della cache buffer, visualizzato da Performance Monitor, viene calcolato dai valori Letture logiche e Letture fisiche come segue:Leggi prima di leggere
Il valore Read Ahead Reads indica il numero di pagine che sono state lette nella cache utilizzando il meccanismo di lettura anticipata durante l'elaborazione della query. Queste pagine non sono necessariamente utilizzate dalla query. Se alla fine è necessaria una pagina, viene conteggiata una lettura logica ma non una lettura fisica. Un valore alto significa che il valore per Letture fisiche è probabilmente inferiore e il rapporto cache-hit è probabilmente superiore a ... [troncato da vgv8]Conteggio scansioni
Il valore Conteggio scansione indica il numero di volte in cui è stato effettuato l'accesso alla tabella corrispondente. Le tabelle esterne di un join di loop nidificato hanno un conteggio di scansione di 1. Per le tabelle interne, il conteggio di scansione potrebbe essere il numero di volte "attraverso il loop". che il tavolo era accessibile. Il numero di letture logiche è determinato dalla somma del conteggio scansioni moltiplicato per il numero di pagine a cui si accede su ciascuna scansione. Tuttavia, anche per i join di loop nidificati, il conteggio delle scansioni per la tabella interna potrebbe apparire come 1. SQL Server potrebbe copiare le righe necessarie dalla tabella interna in un piano di lavoro nella cache e utilizzare questo piano di lavoro per accedere alle righe di dati effettive. Quando questo passaggio viene utilizzato nel piano, spesso non vi è alcuna indicazione nell'uscita IO STATISTICA. È necessario utilizzare l'output di STATISTIC TIME, nonché le informazioni sul piano di elaborazione effettivo utilizzato, per determinare il lavoro effettivo coinvolto nell'esecuzione di una query. I join hash e join in genere mostrano il conteggio delle scansioni come 1 per entrambe le tabelle coinvolte nel join, ma questi tipi di join possono comportare una quantità di memoria sostanzialmente maggiore. È possibile controllare il valore del memusage in sysprocesses mentre viene eseguita la query, ma a differenza del valore physical_io, questo non è un contatore cumulativo ed è valido solo per la query attualmente in esecuzione. Al termine di una query, non c'è modo di vedere quanta memoria ha usato. & Quot;
[1]
Capitolo 4. Risoluzione dei problemi relativi alle prestazioni delle query. Monitoraggio delle prestazioni delle query
All'interno di Microsoft & # 174; SQL Server & # 8482; 2005 : ottimizzazione e ottimizzazione delle query
di Kalen Delaney
Editore: Microsoft Press
Data pub: 26 settembre 2007
Stampa ISBN-10: 0-7356-2196-9
Stampa ISBN-13: 978-0-7356-2196-1
Pagine: 448
[2] |
Monitoraggio delle prestazioni delle query
Ottimizzazione delle prestazioni della query
Di Ron Soukup, Kalen Delaney
Capitolo 14 da Inside Microsoft SQL Server 7.0, pubblicato da Microsoft Press
http://technet.microsoft.com/en-us/library/cc917719.aspx#ECAA
Un riassunto completo di questo qui.
Ignora conteggio scansioni, non è importante. Concentrati su come ridurre le letture logiche. Basato su http://www.practicalsqldba.com/2013/07 /sql-server-performance-tuning.html.