Depois de saber qual componente pesa, a pergunta é qual comando gastou esse tempo. Esta seção responde por componente do perfil e por classe de espera, com os comandos que mais gastaram em cada um.
O que a seção mostra
A seção Principais comandos por componente e por classe (no índice, Comandos por componente) tem dois blocos:
- Por componente do perfil: um grupo para cada um dos maiores componentes do perfil que têm tempo em algum comando, na ordem do perfil;
- Por classe de espera: um grupo para cada classe com tempo em algum comando.
Cada grupo abre e fecha com um clique; o primeiro de cada bloco já vem aberto. A linha do grupo mostra o nome, o tipo (espera, cpu ou não contabilizado), os segundos, a parte do tempo total e quantos comandos gastaram nele.
O tempo de cada comando vem do perfil exclusivo dele: o que o próprio comando gastou, sem o SQL recursivo que ele dispara. Se um SELECT chama uma função que lê outra tabela, por exemplo, a leitura conta no SQL de dentro da função, que é recursivo, e não no SELECT.
Como ler
| Coluna | O que diz |
|---|---|
| # | A posição do comando em Comandos SQL, com link para o detalhe dele. |
| Tempo (s) | Quanto o comando gastou no componente ou na classe. |
| % do total | A parte do comando no tempo do grupo, e não no tempo total da sessão. O peso do grupo no tempo total está na linha do grupo. |
| SQL ID | O sql_id do comando. Em branco na linha de uma forma, porque cada variante tem o seu. |
| Texto | O começo do texto do comando, com link para o detalhe. Na linha de uma forma, que soma comandos que só diferem nos literais, o selo N variantes vem antes do texto (as variantes nas listas). |
A soma da coluna % do total de um grupo pode ficar abaixo de 100%. Parte do tempo não é de nenhum comando: o tempo não contabilizado entre chamadas e as esperas sem cursor. Parte pode ser de comandos fora da lista.
Cada grupo mostra até 10 comandos, ou o número escolhido em Comandos por lista, no alto do relatório. Quando há mais, o grupo termina com Mais N comandos gastaram nele; aumente o número no topo da página para ver.
No relatório de exemplo, o grupo de db file sequential read soma 0,001 s, 18,5% do tempo total: o comando #1 tem 76,9% desse tempo e o comando #2, que é recursivo, 23,1%.
Quando preocupa
- Um comando concentra quase todo o tempo do maior componente: ataque esse comando, pelo detalhe e pelo plano.
- O tempo do componente se espalha por muitos comandos parecidos: o problema é de padrão da aplicação, não de um SQL. Confira se os textos só mudam nos literais (textos compartilháveis).
- Um comando recursivo aparece no topo de um grupo de leitura ou de CPU: o custo está na função ou no trigger, não no comando que a aplicação chamou (SQL recursivo).
Para onde ir depois
- Comandos por componente do relatório de exemplo e o grupo de db file sequential read.
- Detalhe do comando, o próximo passo depois de escolher o comando.
- Perfil do tempo de resposta, para escolher o componente.