- Este tópico contém 9 respostas, 3 vozes e foi atualizado pela última vez 16 anos, 7 meses atrás por vieri.
-
AutorPosts
-
10 de junho de 2008 às 5:51 pm #81947gordonspParticipante
Bom dia a Todos!
Estou enfrentando um problema que não sei como resolver, sendo assim passo a relatar abaixo.
Tenho a consulta abaixo:
select codigo_usu
from
avt_mov_usuario
where codigo_gru=:1
and DATA_MUS>:2 and DATA_MUS<=:3 and codigo_USU=:4 and TIPOMOV_MUS in ('ALEN','ALSA','ALAM') de uma semana para ca o tempo de resposta começou a ficar alto, ou seja, o retorno da consulta esta em torno de 15 s, mas se estiver em cache é instantaneo. Solicitei um trace ao cliente e obtive o seguinte retorno: ------- ------ -------- ---------- ---------- ---------- ---------- ---------- Parse 509 0.01 0.02 0 0 0 0 Execute 509 0.00 0.02 0 0 0 0 Fetch 509 4.79 274.71 43742 172147 0 17 ------- ------ -------- ---------- ---------- ---------- ---------- ---------- total 1527 4.80 274.76 43742 172147 0 17 Misses in library cache during parse: 0 Optimizer goal: RULE Parsing user id: 60 (USCABGF) Rows Row Source Operation ------- --------------------------------------------------- 0 CONCATENATION 0 TABLE ACCESS BY INDEX ROWID AVT_MOV_USUARIO 0 INDEX RANGE SCAN IDX_AMU_CODTPGRU (object id 42781) 0 TABLE ACCESS BY INDEX ROWID AVT_MOV_USUARIO 95 INDEX RANGE SCAN IDX_AMU_CODTPGRU (object id 42781) 0 TABLE ACCESS BY INDEX ROWID AVT_MOV_USUARIO 94 INDEX RANGE SCAN IDX_AMU_CODTPGRU (object id 42781) Rows Execution Plan ------- --------------------------------------------------- 0 SELECT STATEMENT GOAL: RULE 0 CONCATENATION 0 TABLE ACCESS GOAL: ANALYZED (BY INDEX ROWID) OF 'AVT_MOV_USUARIO' 0 INDEX GOAL: ANALYZED (RANGE SCAN) OF 'IDX_AMU_CODTPGRU' (NON-UNIQUE) 0 TABLE ACCESS GOAL: ANALYZED (BY INDEX ROWID) OF 'AVT_MOV_USUARIO' 95 INDEX GOAL: ANALYZED (RANGE SCAN) OF 'IDX_AMU_CODTPGRU' (NON-UNIQUE) 0 TABLE ACCESS GOAL: ANALYZED (BY INDEX ROWID) OF 'AVT_MOV_USUARIO' 94 INDEX GOAL: ANALYZED (RANGE SCAN) OF 'IDX_AMU_CODTPGRU' Alguem saberia como resolver esse problema de performance? Vale ressaltar que essa tabela tem muitos inputs. Agradeço pela ajuda e fico no aguardo. Obrigado Anderson10 de junho de 2008 às 6:08 pm #81948AnônimoEsse índice IDX_AMU_CODTPGRU tem quais colunas ?
10 de junho de 2008 às 6:17 pm #81949gordonspParticipanteAs colunas são:
Codigo_usu, tipomov_mus, codigo_gru (ordem de criação).Só para conhecimento, existe um outro indice (IDX_AMU_GRDTUSTM), com os quatro campos do where.
Espero ter ajudado.
10 de junho de 2008 às 6:30 pm #81950AnônimoVocê já verificou as estatísticas dessa tabela e seus índices ? Será que não pode ser isso ?
10 de junho de 2008 às 6:50 pm #81952gordonspParticipantevDrago,
Infelizmente não tenho conhecimento o suficiente para levantar essas informações, mas se tiver algum link ou documento que explique isso ficarei grato.
Pela parte do trace que passei não tem como avaliar?Obrigado
Anderson
10 de junho de 2008 às 6:55 pm #81953Anônimoroda essa query e coloca o resultado aqui pra gente avaliar…
select table_name, last_analyzed from user_tables
where table_name = ‘AVT_MOV_USUARIO ‘;10 de junho de 2008 às 10:00 pm #81957gordonspParticipantevdrago,
Segue abaixo o resultado da consulta:
1 select table_name, last_analyzed from user_tables
2* where table_name = ‘AVT_MOV_USUARIO’
SQL> /TABLE_NAME LAST_ANALYZ
AVT_MOV_USUARIO 14-JUL-2007
Agradeço pela ajuda.
10 de junho de 2008 às 10:30 pm #81958AnônimoComo faz tempo que vc não atualiza as estatísticas, vamos tentar por esse caminho.
Quando vc puder, rode o script abaixo, ele atualizará as estatísticas do banco.
begin
dbms_stats.gather_schema_stats(‘OWNER’, cascade=>true) ;
end;
Lembrando que no lugar da palavra OWNER, vc colocará o nome do seu usuário no banco que possui as tabelas. Esse processo pode demorar muito tempo (dependendo do tamanho do seu banco), então, aconselho vc a fazê-lo em horário de menos pico de utilização.
Logo depois, vc roda a query e faz um trace novamente. Vamos ver se melhora a performance.
10 de junho de 2008 às 10:43 pm #81959gordonspParticipantevDrago,
Gostaria de agradecer pelo seu apoio e irei fazer isso e tão logo tenha a resposta envio o resultado.
Obrigado
13 de junho de 2008 às 6:13 am #81973vieriParticipanteSó pra curiosidade…
Acho que seu banquinho está otimizado por REGRA de acordo com trecho no trace.
Misses in library cache during parse: 0
*******Optimizer goal: RULE*******
Parsing user id: 60 (USCABGF)confira com um SQL>show parameters optimizer_mode
Caso seja isso…. pergunte a um DBA o pq disso.. ele lhe deve boas explicações…(caso tenham um DBA)…
caso não tenha altere o init.ora com o arquivo optimizer_mode=choose
[]s
-
AutorPosts
- Você deve fazer login para responder a este tópico.