1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Oracle não está a optimizar pesquisas

Discussão em 'Programação' iniciada por xuxaki, 6 de Março de 2009. (Respostas: 6; Visualizações: 761)

  1. xuxaki

    xuxaki Power Member

    Boas,
    estou a testar a performance do motor de bases de dados Oracle 10g.
    Pensei que iria ter problemas em fazer testes sem optimizações, pois teria de estar sempre a limpar a memória (pois o Oracle iria tentar optimizar tudo ao máximo), mas o que me está a acontecer é o oposto! O Oracle não está a optimizar nada, demora sempre +/- o mesmo tempo a executar a mesmo query! >(

    Alguém me sabe o dizer o que se passa?
     
  2. nasic

    nasic Power Member

    Já consultaste os planos de execução eleitos pelo SGBD? Uma hipótese para aumento de performance é a criação de indices sobre os campos utilizados nas queries.
     
  3. xuxaki

    xuxaki Power Member

    Mas a intenção é mesmo ver a diferença entre tempos de execução de querys com e sem índices. Vou fazer o explain plan, mas não me parece que haja algum tipo de indicação sobre carregar dados para memória..
     
  4. nasic

    nasic Power Member

    Então se calhar os índices que criaste não são os melhores.será que é isso?
     
  5. xuxaki

    xuxaki Power Member

    Pois, não me expliquei nesse aspecto...
    O teste que estou a fazer é:
    1- tabelas sem quaisquer índices ou chaves. Fazer as pesquisas e medir os tempos. Esses tempos deveriam melhorar à medida que fosse executada a mesma query repetidamente, o que não está acontecer!! (o meu problema portanto...)
    2- inserir os índices e executar as mesmas querys de 1 e verificar a diferença de performance.

    Mas não percebo porquê, no ponto 1 os tempos estão sempre semelhantes, não está a carregar os dados para a memória!
     
  6. anarquista

    anarquista Banido

    Quantos registos tem as tabelas de testes? E quantos tupulos são retornados nas pesquisas? os tupulos vem completos ou só vem as colunas pertinentes?
     
  7. xuxaki

    xuxaki Power Member

    Acho que já sei o que se passa. A consulta em causa é bastante complexa, pois tem muitas restrições e a consulta é feita a várias tabelas. Então o que eu penso estar acontecer é o seguinte:
    O tempo da pesquisa não pode melhorar muito. Existem muitas restrições e é feita a consulta a várias tabelas em simultâneo, ou seja, basicamente o que acontece é que o Oracle decide fazer full table scan (ler tudo do disco) em todas as tabelas envolvidas, e o tempo que demora é o tempo desses vários full table scan. De modo a evitar estar sempre a encher a memória com full table scans, o Oracle decide utilizar apenas uma pequena porção de memória para a consulta, daí não carregar nada para a memória, e na próxima consulta vai repetir o processo, indo sempre a disco.

    Será que me fiz entender? :)
     

Partilhar esta Página