É interessante obtermos dados de algumas
queries para podermos identificar custos altos de processamento e assim
trabalhar em cima delas para melhorar o fluxo de trabalho do Oracle e
assim melhorar o desempenho do sistema.
Com a view V$SQL podemos buscar dados estatísticos de comandos SQL que estão em pool compartilhado, que armazena informações como as comandos sql executados recentemente. Essa view é uma boa ferramenta, pois podemos identificar nossas queries e em seguida executar uma consulta na view V$SQL e obter os dados necessários para análise.
Colocamos um comentário dentro da instrução SQL preferencialmente separando escopo e aplicação com um ponto:
select /* CONSULTA_CLIENTE.por_regiao */
c.cli_cpf,
c.cli_dta_cadastro,
c.cli_nome
from empresa e,
cliente_parametros c
where c.emp_codg = e.emp_codg
and
e.emp_uf = 'MT'
Assim
identificamos o SQL dentro do pool compartilhado fazendo uma pesquisa
na coluna SQL_TEXT pelo comentário que adicionamos, no caso '%CONSULTA_CLIENTE%':
select EXECUTIONS,
ELAPSED_TIME,
DISK_READS,
BUFFER_GETS,
USERS_EXECUTING
from v$sql
where SQL_TEXT like '%CONSULTA_CLIENTE%'
and SQL_TEXT not like '%v$sql%'
Na última linha retiro as dados deste próprio select.
Utilizei alguns dos diversos campos da view V$SQL e aqui está a descrição de cada uma delas:
EXECUTIONS
|
NUMBER
|
Número
de execuções que ocorreram a este objeto, uma vez que foi trazido para a
biblioteca de cache
|
ELAPSED_TIME
|
NUMBER
|
Tempo decorrido (em microssegundos) utilizado por este cursor para
análise, execução e busca
|
DISK_READS
|
NUMBER
|
Número de leituras para este cursor filho
|
BUFFER_GETS
|
NUMBER
|
Número de buffer obtido para este cursor filho
|
USERS_EXECUTING
|
NUMBER
|
Número
de usuários executando este comando
|
Existem diversos
outros campos na view V$SQL e que você pode ver suas descrições na
referência do Oracle que deixei nos links de referência.
Nota sobre a view V$SQL
Como
está descrito nas referências do Oracle, a view V$SQL apresenta
estatísticas de áreas de SQL compartilhadas sem a cláusula GROUP BY e
contém uma linha para cada filho do SQL original inserido. Estatísticas
exibidas em V$SQL são normalmente atualizadas no final de execução da
consulta. No entanto, para consultas de longa execução, que são
atualizadas a cada 5 segundos. Isto torna mais fácil para ver o impacto
destes tipos de SQL enquanto eles ainda estão rodando.
Referências: