Translate

quarta-feira, 7 de dezembro de 2011

Procurar SQL pobres

Nem sempre é possível manter o banco de dados livre da má utilização de seus recursos por parte de programas como aplicações externas, usuários diretos ou rotinas particulares agendadas para execução nativa no banco de dados. 

Esta condição de "nem sempre será possível" independe da qualidade dos profissionais usuários do banco de dados, por isso não é construtivo culpá-los e nem mesmo exigir de todos o domínio das boas práticas de banco de dados, todavia, é necessário envolvê-los num processo contínuo de capacitação.

As querys a seguir fazem alguns ranks importantes para apoiar a descoberta de SQL problemáticos sobre o banco de dados. Nem tudo o que aparecer no rank será um problema, por isso é necessário interpretar cada situação.

1) A query a seguir verifica os 10 comandos mais executados
 
SELECT
  SQL_TEXT
  , EXECUTIONS
FROM (
  SELECT
    SQL_TEXT
    , EXECUTIONS
    , DENSE_RANK() OVER (ORDER BY EXECUTIONS DESC) EXEC_RANK
  FROM V$SQL
)
WHERE EXEC_RANK <= 10

2) A query a seguir verifica os 10 comandos que mais fazem leituras em disco (I/O) 

SELECT SQL_TEXT, DISK_READS FROM (
  SELECT
  SQL_TEXT
  , DISK_READS
  , DENSE_RANK() OVER (ORDER BY DISK_READS DESC) DISK_READS_RANK
  FROM V$SQL
)
WHERE DISK_READS_RANK <= 10

3) A query a seguir verifica os 10 comandos que mais fazem leituras lógicas
 
SELECT SQL_TEXT, BUFFER_GETS FROM (
  SELECT
  SQL_TEXT
  , BUFFER_GETS
  , DENSE_RANK() OVER (ORDER BY BUFFER_GETS DESC) BUFFER_GETS_RANK
  FROM V$SQL
)
WHERE BUFFER_GETS_RANK <= 10

Nenhum comentário:

Postar um comentário