A saída planejada, por exemplo
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR( '' ,NULL,'ALLSTATS LAST'));
tem as colunas OMem e 1Mem. Qual é o significado deles? Não consegui encontrar nenhuma referência ou documentação sobre eles, apenas esta única página da web , afirmando (ou perguntando):
OMem:- Tamanho de memória ideal estimado (PGA), para executar a operação na memória.
1Mem:- Tamanho estimado para executar a operação em passagem única para o disco?
OMem - Quantidade estimada de memória necessária para executar a operação apenas na memória. Isso também é chamado de execução ótima.
1Mem - Quantidade estimada de memória necessária para executar a operação em uma passagem (gravar e ler do disco (temp) apenas uma vez). Isso é chamado de execução de uma passagem.
Uma execução multi-pass é onde os mesmos dados são gravados e lidos do disco mais de uma vez.
Pense na classificação, onde o banco de dados precisa classificar uma grande quantidade de dados em uma pequena área de PGA/classificação.
Como você consulta as estatísticas do plano com ALLSTATS LAST, algumas colunas extras:
Used-Mem - A quantidade de memória realmente usada para esta operação. Também há um número entre parênteses nesta coluna. Se o número for 0, foi uma execução ideal, usou apenas memória e nenhum espaço temporário. Se o número for 1, então foi uma execução de uma passagem. Se o número for maior que 1, foi uma execução multipassagem e esse número é o número de passadas.
Used-Tmp - A quantidade de espaço temporário usado para esta operação.
Aqui está uma apresentação sobre os passes de execução a partir da página 28: http://www.nocoug.org/download/2003-08/how_cbo_works.ppt