Ir para conteúdo
josePeixoto

Plano de execução no oracle

Recommended Posts

Olá a todos!

 

Eu gostaria de saber como funciona um plano de execução no Oracle e se isso é comumente usado nas empresas hoje.

Eu procurei materiais na internet e não achei nada claro, porque estou tentando otimizar umas consultas.

 

Obrigado desde já.

 

Abraço!

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

O material na WEB é amplo até demais , comece lendo o básico

 

Tabela explain_plain 

Gerar o plano de execução

Uso de HINTS

Coleta de estatísticas 

Uso de índices

 

Programas como SqlDevelopers e similares já tem funções prontas que geram o plano de execução.

 

Pessoalmente acho boa prática executar e analisar o plano para sqls que serão executados de forma recorrente no ambiente em que serão executadas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora


  • Conteúdo Similar

    • Por oomaikoo
      Boa noite galera, estou administrando um servidor apache que tem em média 300 a 400 acessos simultâneos, é um site de notícias em WORDPRESS então as vezes uma noticia viraliza e o servidor bate 800 900 usuários simultâneos e ele cai, reinicia, enfim, estou utilizando 2 módulos ativos PREFORK e WORKER com os seguintes configurações
      <IfModule prefork.c> ServerLimit 16 StartServers 768 MinSpareServers 512 MaxSpareServers 768 MaxClients 16 MaxKeepAliveRequests 128 MaxRequestsPerChild 128 </IfModule> <IfModule worker.c> ServerLimit 16 StartServers 768 MinSpareServers 512 MaxSpareServers 768 MaxClients 16 MaxKeepAliveRequests 128 MaxRequestsPerChild 128 </IfModule> Minha pergunta é, posso melhorar a performance deles? esta configuração está boa ou me indicam alguma mudança?
    • Por MarKteus
      Estou usando essa abordagem pra tentar ler dados de uma stored procedure Oracle 11g, mas o reader só vem vazio alguém sabe o que pode ser ?
       
      Sim a tabela contem dados
      oraCmd = new OracleCommand("SP_SELECIONA_CLIENTEE", oraCon);
      oraCmd.CommandType = CommandType.StoredProcedure;
       
      oraCmd.Parameters.Add("@P_ID", OracleDbType.Long, ParameterDirection.Input).Value = 4;
      oraCmd.Parameters.Add("@VIDCLIENTE", OracleDbType.Int16, ParameterDirection.Output);
      oraCmd.Parameters.Add("@VNOMECLIENTE", OracleDbType.NVarchar2, ParameterDirection.Output);
      oraCmd.Parameters.Add("@VDATACADASTRO", OracleDbType.Date, ParameterDirection.Output);
       
      oraRdr = oraCmd.ExecuteReader();
       
       
       
    • Por MarKteus
      Olá

      Alguém sabe como posso fazer a procedure Oracle retornar para serem valores usados na aplicação assim como já acontece no SQL ?
       
      Estou tentando conforme abaixo, não há erros na proc, mas não consigo obter os valores dos campos.
       
      O que há de errado ?
       
      create or replace PROCEDURE SP_SELECIONA_CLIENTE
      (
      -- Parametros de entrada
      P_ID IN CLIENTE.IDCLIENTE%TYPE
      ) AS

      -- Parametros de saida
      VIDCLIENTE CLIENTE.IDCLIENTE%TYPE;
      VNOMECLIENTE CLIENTE.NOMECLIENTE%TYPE;
      VDATACADASTRO CLIENTE.DATACADASTRO%TYPE;

      CURSOR regCliente(P_ID IN CLIENTE.IDCLIENTE%TYPE) IS
      SELECT "IDCLIENTE", "NOMECLIENTE", "DATACADASTRO"
      FROM CLIENTE C WHERE C.IDCLIENTE = P_ID;

      regs regCliente%ROWTYPE;

      CURSOR regClientes IS
      SELECT "IDCLIENTE", "NOMECLIENTE", "DATACADASTRO"
      FROM CLIENTE C;

      regs regClientes%ROWTYPE;

      BEGIN


      IF P_ID IS NOT NULL THEN

      IF regCliente%ISOPEN THEN
      CLOSE regCliente;
      END IF;

      OPEN regCliente(P_ID);
      FETCH regCliente into
      VIDCLIENTE, VNOMECLIENTE, VDATACADASTRO;
      ELSE

      IF regClientes%ISOPEN THEN
      CLOSE regClientes;
      END IF;

      OPEN regClientes;
      FETCH regClientes into
      VIDCLIENTE, VNOMECLIENTE, VDATACADASTRO;
      END IF;

      END;

    • Por Paulo de Tarso F. M.
      Olá pessoal!
       
      Uma dúvida, tenho uma base de registros com suas 10.000 linhas separadas em 50 e tra-lá-lás colunas. Qual é a melhor forma de montar uma query abaixo de uma forma mais otimizada? O host está enviando avisos de queries lentas, mas eu não sei como resolver...
      SELECT * FROM tabela As tabelas possuem PKs e evito usar o *, especifico todas as colunas que eu quero, mesmo que seja a tabela inteira em algumas situações, mas ainda assim costumo incluir todos os nomes, inclusive para poder usar um alias.
       
      Diante disso, que outras boas práticas posso usar para amenizar esse problema? Reforço: preciso exportar a tabela inteira em alguns momentos, isso é fato, mas queria saber se existe alguma forma de melhorar esse processo.
       
      Abraço!
    • Por Marcio Katsumi Marques
      Supondo que eu tenha uma tabela de "alunos" com muitos campos (EX: nome, ra, rg, cpf, telefone, endereco, numero, bairro, cep, pai, mae e etc..) o modo correto seria separar os campos em tabelas mais especificas como 'dados' e 'endereço', ou pode se deixar em uma tabela só?
       
      Queria saber se as pesquisas feitas com uma única tabela com muitos campos é mais eficiente do que em tabelas 'desmembradas'.
       
      De quebra, se alguem souber como funciona essa mesma questão no Doctrine ou ainda no Hibernate seria bem legal tambem. :D
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.

Este projeto é mantido e patrocinado pelas empresas:
Hospedado por: