L'unità più piccola di accesso ai dati in Oracle Database è un blocco. Non una fila.
Ogni blocco può memorizzare molte righe.
Il database può accedere a un blocco in modalità corrente o coerente.
- Corrente =poiché il blocco esiste "in questo momento".
- Coerente =poiché il blocco esisteva al momento dell'avvio della query.
Le colonne query e corrente riportano quante volte il database ha effettuato l'accesso a un blocco in modalità coerente (query) e corrente.
Quando si accede a un blocco potrebbe essere già nella cache del buffer (memoria). In tal caso, non è necessario l'accesso al disco. In caso contrario, deve eseguire una lettura fisica (pr). La colonna del disco è un conteggio delle letture fisiche totali.
Le statistiche per ogni riga del piano sono le cifre per quell'operazione. Più la somma di tutte le sue operazioni figlio.
In parole povere, il database elabora il piano accedendo prima al primo figlio. Quindi passa le righe al genitore. Quindi tutte le altre operazioni figlio di quel genitore in ordine. Le operazioni secondarie sono rientrate dal loro genitore nel display.
Quindi il database ha elaborato la tua richiesta in questo modo:
- Leggi 2.000 righe da CLIENTE. Ciò ha richiesto 749 blocchi coerenti e 363 letture del disco (valori cr e pr su questa riga). Ci sono voluti 10.100 microsecondi.
- Leggi 112.458 righe da BOOKING. Ciò ha eseguito 8.203 letture coerenti e zero letture del disco. Ci sono voluti 337.595 microsecondi
- Unisci queste due tabelle insieme usando un hash join. I valori CR, PR, PW (scritture fisiche) e tempo sono la somma delle operazioni sottostanti. Inoltre, qualunque sia il lavoro svolto da questa operazione. Quindi l'hash join:
- ha fatto 8.952 - ( 749 + 8.203 ) =zero letture coerenti
- did 363 - ( 363 + 0 ) =zero letture fisiche
- ci sono voluti 1.363.447 - ( 10.100 + 337.595 ) =1.015.752 microsecondi per l'esecuzione
Si noti che i totali CR e PR per l'hash join corrispondono ai totali della query e del disco nella riga di recupero?
La colonna del conteggio riporta il numero di volte in cui l'operazione è stata eseguita. Un fetch è una chiamata al database per ottenere le righe. Quindi il cliente ha chiamato il database 7.499 volte. Ogni volta che riceveva ceil( 112.458 / 7.499 ) =15 righe.
CPU è il tempo totale in secondi in cui i processori del server hanno eseguito quel passaggio. Trascorso è il tempo totale dell'orologio da parete. Questo è il tempo della CPU + qualsiasi lavoro extra. Come letture del disco, tempo di rete, ecc.