Lentidao em consulta e analise de trace

Tuning de Banco, Tuning de SQL, Ferramentas de tuning
Responder
vvp0
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 6
Registrado em: Ter, 23 Out 2012 2:04 pm

Boa Tarde a todos!

Este é meu primeiro tópico aqui no forum e preciso da ajuda de voces...

Estou com um problema de lentidão em uma consulta gigantesca com 3 unions,já verifiquei que a segunda consulta que causa lentidao,realizei um trace da consulta e verifiquei que existe um join que esta trazendo muitos registros e com o metodo de acesso TABLE ACCESS BY INDEX ROWID.Gostaria de saber se este metodo de acesso é realmente o apropriado para ligação de tabelas que contem muitos registros como é o caso da minha(aprox. 100.000 nas duas tabelas) e se existe outro e outa forma de modificar isto? -
OBS:O intrigante é que esta consulta só é lenta neste cliente nos outros 100 a extremamente rapida e no meu ambiente tambem...descofio que pode ser a performance do banco deles. -

Olhem uma parte do meu trace:

Selecionar tudo

Rows     Row Source Operation
-------  ---------------------------------------------------
33           TABLE ACCESS BY INDEX ROWID ATENDIME (cr=3293923 pr=0 pw=0 time=55781817 us)
17988299            INDEX RANGE SCAN ATENDIME_V_INTERNADOS (cr=87843 pr=0 pw=0 time=35978810 us)(object id 72840)

call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.10       0.10          0          0          0           0
Execute      1      0.00       0.00          0          0          0           0
Fetch        1     56.68      56.10          0    3310107          0          61
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        3     56.79      56.21          0    3310107          0          61

OVERALL TOTALS FOR ALL NON-RECURSIVE STATEMENTS

call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse       91      0.28       0.28          0          0          0           0
Execute     89      0.00       0.00          0          0          0          83
Fetch        5     59.91      59.30          0    3494205          0          74
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total      185     60.20      59.60          0    3494205          0         157

Se alguém é fera em performance de banco e sqlTuning ai da uma mão,pois não sei mais onde mexer...
rogenaro
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Sex, 30 Mar 2007 7:26 pm
Localização: Londrina - PR
Rafael O. Genaro

O acesso por rowid é realizado para recuperar os dados de um registro, geralmente quando é utilizado um índice para acessar os registros.
Este acesso é rápido, e não deveria causar problemas.

O que você precisaria analisar no explain plan são como os joins estão sendo executados (nested loops, hash join, merge) e como os dados estão sendo acessados (full scan, índice via full scan, índice via skip scan, índice via range scan ou índice via unique scan - no geral do mais lento para o mais rápido, dependendo da situação claro).

Conhecendo como as tabelas envolvidas estão populadas, é possível analisar se o plano está aceitável ou não (um range scan sobre um índice que irá retornar metade dos registros da tabela, por exemplo, não é muito vantajoso)

Verifique também a ordem em que os jois acontecem.
Para nested loops, por exemplo, a primeira tabela exibida no plano é a tabela que será utilizada para buscar os registros nas tabelas aninhadas. Desta forma, geralmente é preferivel nestas situações que a tabela mãe seja aquela com o maior número de registros filtrados pelas condições da cláusula where.
vvp0
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 6
Registrado em: Ter, 23 Out 2012 2:04 pm

Vlw cara,vo da uma analisada no meu plano e na consulta,vê onde posso mexer....
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 10 visitantes