GPO ( Grupo de Profissionais Oracle )
A maior comunidade Oracle do Brasil !

Home Fóruns SQL e PL/SQL Performance de relatórios

Visualizando 6 posts - 1 até 6 (de 6 do total)
  • Autor
    Posts
  • #148647
    Eliza
    Participante

    Bom dia,

    Tenho alguns relatórios baseadas em views.    Até a semana passada estava normal, já nesta, estão mais lentos.

    Tem alguma configuração no banco, ou limpeza de  arquivos temporários,…..    que possam melhorar a performance dos relatórios ?

     

     

     

    #148677
    Motta
    Participante

    Eliza , problema meio “gasoso” , mas vamos :

    A base (dados , usuários) cresceu ?

    Alguma mudança de infraestrutura ?

    Versão , software , SO etc.

    As estatísticas estão atualizadas ?

    Houve deleções na base ?

    As views acessam as mesmas tablespaces/datafiles ?

    Procure pelo que mudou na estrutura , o culpado em geral está aí.

    #148678
    Eliza
    Participante

    Olá,

    Respondendo: NÂO às perguntas.

    Fizemos uma alteração na view, que se fez necessária:

    ======== ANTES ===========================

    CREATE OR REPLACE FORCE EDITIONABLE VIEW “TESTE”.”TCP_CPASGDL” (“DTENTSAI”, “CODEMP”, “NUNOTA”, “NUMNOTA”, “CODPARC”, “RAZAOSOCIAL”, “CODPROD”, “QTDNEG”, “VLRTOT”, “VLRIPI”, “VLRSUBST”, “VLRDESC”, “VLRCPA”, “CODVEND”, “APELIDO”) AS
    SELECT
    NVL(CAB.DTENTSAI,CAB.DTNEG) AS DTENTSAI, , CAB.CODEMP, CAB.NUNOTA, CAB.NUMNOTA, CAB.CODPARC, PAR.RAZAOSOCIAL, ITE.CODPROD, ITE.QTDNEG, ITE.VLRTOT, ITE.VLRIPI, ITE.VLRSUBST, ITE.VLRDESC, ROUND((ITE.VLRTOT+ITE.VLRIPI+ITE.VLRSUBST-ITE.VLRDESC)/(ITE.QTDNEG),2) AS VLRCPA, VEN.CODVEND , VEN.APELIDO
    FROM TGFCAB CAB,
    TGFTOP TPO,
    TGFITE ITE,
    TGFPAR PAR,
    TGFVEN VEN
    WHERE
    CAB.CODTIPOPER = TPO.CODTIPOPER
    AND CAB.DHTIPOPER = TPO.DHALTER AND CAB.CODPARC = PAR.CODPARC
    AND CAB.STATUSNOTA = ‘L’ AND CAB.NUNOTA = ITE.NUNOTA
    –AND TPO.AD_FECHGDLCPAS = ‘S’   AND TPO.GRUPO = ‘COMPRAS’      AND TPO.TIPMOV in (‘C’)AND CAB.CODVEND = VEN.CODVEND

     

    ======== DEPOIS ==============================
    <div>

    CREATE OR REPLACE FORCE EDITIONABLE VIEW “LEONFER”.”TCP_CPASGDL” (“DTENTSAI”, “CODEMP”, “NUNOTA”, “NUMNOTA”, “CODPARC”, “RAZAOSOCIAL”, “CODPROD”, “QTDNEG”, “VLRTOT”, “VLRIPI”, “VLRSUBST”, “VLRDESC”, “VLRCPA”, “CODVEND”, “APELIDO”) AS
    SELECT
    NVL(CAB.DTENTSAI,CAB.DTNEG) AS DTENTSAI , CAB.CODEMP , CAB.NUNOTA , CAB.NUMNOTA , CAB.CODPARC , PAR.RAZAOSOCIAL , ITE.CODPROD , ITE.QTDNEG , ITE.VLRTOT
    , ITE.VLRIPI , ITE.VLRSUBST , ITE.VLRDESC , ROUND((ITE.VLRTOT+ITE.VLRIPI+ITE.VLRSUBST-ITE.VLRDESC)/(ITE.QTDNEG),2) AS VLRCPA , VEN.CODVEND , VEN.APELIDO
    FROM TGFCAB CAB
    , TGFTOP TPO
    , TGFITE ITE
    , TGFPAR PAR
    , TGFVEN VEN
    WHERE CAB.CODTIPOPER = TPO.CODTIPOPER
    AND CAB.DHTIPOPER = TPO.DHALTER
    AND CAB.CODPARC = PAR.CODPARC
    AND CAB.STATUSNOTA = ‘L’
    AND CAB.NUNOTA = ITE.NUNOTA
    –AND TPO.AD_FECHGDLCPAS = ‘S’
    AND TPO.GRUPO = ‘COMPRAS’
    AND TPO.TIPMOV in (‘C’)
    AND CAB.CODVEND = VEN.CODVEND

    UNION ALL
    SELECT
    NVL(CAB.DTENTSAI,CAB.DTNEG) AS DTENTSAI , CAB.CODEMP , CAB.NUNOTA , CAB.NUMNOTA , CAB.CODPARC , PAR.RAZAOSOCIAL , ITE.CODPROD , ITE.QTDNEG , ITE.VLRTOT , ITE.VLRIPI , ITE.VLRSUBST , ITE.VLRDESC
    , ROUND((ITE.VLRTOT+ITE.VLRIPI+ITE.VLRSUBST-ITE.VLRDESC)/(ITE.QTDNEG),2) AS VLRCPA , VEN.CODVEND , VEN.APELIDO
    FROM TGFCAB CAB
    , TGFTOP TPO
    , TGFITE ITE
    , TGFPAR PAR
    , TGFVEN VEN
    WHERE CAB.CODTIPOPER = TPO.CODTIPOPER
    AND CAB.DHTIPOPER = TPO.DHALTER
    AND CAB.CODPARC = PAR.CODPARC
    AND CAB.STATUSNOTA = ‘L’
    AND CAB.NUNOTA = ITE.NUNOTA
    –AND TPO.AD_FECHGDLCPAS = ‘S’
    AND ( TPO.GRUPO = ‘TRANSFERÊNCIA’ AND TPO.CODTIPOPER = 807)
    AND ITE.CODVEND = VEN.CODVEND

    UNION ALL
    SELECT
    NVL(CAB.DTENTSAI,CAB.DTNEG) AS DTENTSAI , CAB.CODEMP , CAB.NUNOTA , CAB.NUMNOTA , CAB.CODPARC , PAR.RAZAOSOCIAL , ITE.CODPROD , ITE.QTDNEG , ITE.VLRTOT , ITE.VLRIPI , ITE.VLRSUBST , ITE.VLRDESC
    , ROUND((ITE.VLRTOT+ITE.VLRIPI+ITE.VLRSUBST-ITE.VLRDESC)/(ITE.QTDNEG),2) AS VLRCPA , VEN.CODVEND , VEN.APELIDO
    FROM TGFCAB CAB
    , TGFTOP TPO
    , TGFITE ITE
    , TGFPAR PAR
    , TGFVEN VEN
    WHERE CAB.CODTIPOPER = TPO.CODTIPOPER
    AND CAB.DHTIPOPER = TPO.DHALTER
    AND CAB.CODPARC = PAR.CODPARC
    AND CAB.STATUSNOTA = ‘L’
    AND CAB.NUNOTA = ITE.NUNOTA
    –AND TPO.AD_FECHGDLCPAS = ‘S’
    AND ( TPO.GRUPO = ‘INVENTÁRIO’ AND TPO.CODTIPOPER = 900)
    AND ITE.CODVEND = VEN.CODVEND

    </div>
    <div></div>
    <div>E  por se tratar de um software de terceiro,  estamos verificando se a aplicação gera log, temporários,… no servidor.  Se acontecer, precisaremos excluir  periodicamente.</div>
    <div></div>
    <div></div>
    <div></div>

    #148681
    Eliza
    Participante

    Inclusão de  UNION ALL

    Não deveria ficar lento….  estou achando que pode ser o servidor de aplicação

     

    #148682
    Motta
    Participante

    Não deveria ficar lento … Concordo com você mas o Banco discorda … 🙂

    O union deve ser o culpado , como é a execução  dos sql de forma separada ?

    As tabelas são as mesmas não tentaram em só select ?

    PS , Mantenha as estatísticas atualizadas , um job semanal numa hora de ociosidade de máquina resolve.

    #148683
    Eliza
    Participante

    Como as informações são únicas,  troquei o UNION  ALL  por UNION.

    Melhorou muito a performance.

    Vou tentar colocar num select só.

     

    Obrigada pelo retorno e dicas.

     

     

     

Visualizando 6 posts - 1 até 6 (de 6 do total)
  • Você deve fazer login para responder a este tópico.