A menor unidade de acesso a dados no Oracle Database é um bloco. Nem uma fila.
Cada bloco pode armazenar muitas linhas.
O banco de dados pode acessar um bloco no modo atual ou consistente.
- Atual =pois o bloco existe "agora".
- Consistente =como o bloqueado existia no momento em que sua consulta foi iniciada.
As colunas query e current informam quantas vezes o banco de dados acessou um bloco no modo consistente (consulta) e atual.
Ao acessar um bloco ele já pode estar no cache do buffer (memória). Nesse caso, nenhum acesso ao disco é necessário. Se não, tem que fazer uma leitura física (pr). A coluna do disco é uma contagem do total de leituras físicas.
As estatísticas de cada linha no plano são os números dessa operação. Mais a soma de todas as suas operações filhas.
Em termos simples, o banco de dados processa o plano acessando primeiro o primeiro filho. Em seguida, passa as linhas para o pai. Em seguida, todas as outras operações filho desse pai em ordem. As operações filho são recuadas de seu pai na exibição.
Então o banco de dados processou sua consulta assim:
- Leia 2.000 linhas de CUSTOMER. Isso exigiu 749 obtenções de blocos consistentes e 363 leituras de disco (valores cr e pr nesta linha). Isso levou 10.100 microssegundos.
- Leia 112.458 linhas de BOOKING. Isso fez 8.203 leituras consistentes e zero leituras de disco. Isso levou 337.595 microssegundos
- Uniu essas duas tabelas usando uma junção de hash. Os valores de CR, PR, PW (gravações físicas) e tempo são a soma das operações abaixo disso. Além do trabalho que esta operação fez. Então a junção de hash:
- fez 8.952 - ( 749 + 8.203 ) =zero leituras consistentes
- fez 363 - ( 363 + 0 ) =zero leituras físicas
- levou 1.363.447 - ( 10.100 + 337.595 ) =1.015.752 microssegundos para executar
Observe que os totais de CR e PR para a junção de hash correspondem aos totais da consulta e do disco na linha de busca?
A coluna de contagem informa o número de vezes que a operação ocorreu. Uma busca é uma chamada ao banco de dados para obter linhas. Assim, o cliente ligou para o banco de dados 7.499 vezes. Cada vez que recebia ceil( 112.458 / 7.499 ) =15 linhas.
CPU é o tempo total em segundos que os processadores do servidor estavam executando essa etapa. Decorrido é o tempo total do relógio de parede. Este é o tempo de CPU + qualquer trabalho extra. Como leituras de disco, tempo de rede, etc.