Pular para o conteúdo
Visualizando 7 posts - 1 até 7 (de 7 do total)
  • Autor
    Posts
  • #79046
    punk_doido
    Participante

      Ola galera,

      No banco Oracle 9i, tenho uma tabela de uns 15 campos que somente terá insert´s de uma única aplicação que roda 24×7. Média de 2 milhões de registros por dia. Não tem update e delete somente uma rotina de limpeza/backup de registros.
      Alguem pode me ajudar com alguma dica sobre o que fazer para aumentar o desempenho do insert nessa tabela ? Ela possui alem do indice PK, uma unique de uns 6 campos chaves para garantir que não existem dados duplicados e mais 2 indices para consultas em campos importantes.

      Os parametros PCTFREE e PCTUSED já deixei como 1 e 99 respectivamente.

      Obrigado pela ajuda!

      #79049
      chduarte
      Participante

        Vc pode fazer o seguinte para melhor o desempenho:

        Criar um tablespace so para ela com NOLOGGING em um disco rapido.
        Criar a tabela e os indices com NOLOGGING.
        Na clausula insert colocar o hint append como segue:
        insert /*+ append */ into tabela values(xxx);
        Se for banco 9 crie o tablespace com uniform size multiplo do tamanho da sua tabela.

        Lembre que operacoes nologging sao direct path insert. Entao sua tablespace ficara como norecoverable e as informacoes nao vao para archive. Entao se vc precisar de backup para esta tabela tenha uma boa estrategia de backup incremental. Talvez utilizando RMAN.

        []

        #79050
        rosterne
        Participante

          Olá,

          Você pode colocar o índices no momento da carga em DISABLE VALIDATE.

          Com DISABLE VALIDATE A constraint continua válida, mas não é como na cláusula ENABLE que verifica apenas linhas novas e atualizadas.

          Para as chaves primárias e unique, o índice é removido. Isto é muito importante para o processo de carga de um DW por exemplo, pois a criação de índices é um overhead muito grande (lembre-se: um índice sobre a chave primária de uma tabela, é quase tão grande quanto a própria, e praticamente não tem utilidade para o otimizador de consultas).

          Espero ter ajudado.

          #79051
          punk_doido
          Participante

            Realmente quanto ao backup no momento não está definida a estratégia, por isso não está sendo gerado Archive. Mas a tablespace está como LOGGING, há necessidade de no momento desativar essa opção ? Ou só pelo fato de não estar gerando Archive eu já estou ganhando o desempenho relacionado com esse assunto ?

            Quanto a desabilitar os indices no momento da carga, ainda estou na duvida… a tabela é alimentada o tempo todo (24×7), enquanto isso acontece tem relatórios, outros processos, diversas execuções e pesquisas nela, que utilizam o indice PK e os outros com excessao da Unique. Se eu manter o tempo todo o indice desativado, vou prejudicar os outros acessos externos que utilizam os indices certo ?

            Valeu pela ajuda galera!!! E desculpem se estou sendo muito chato!!!

            #79052
            Marcio68Almeida
            Participante

              O fato de não estar gerando archive é um problema a parte, as transações estão sendo registradas no REDO e este gera I/O, que foi o que nosso colega sugeriu que fosse desabilitado.
              Quanto aos índices, você tem que ver qual a estratégia a ser adotada, pois se fazem consulta o dia inteiro também, não vai conseguir tempo para desabilitar e habilitar os índices… (eu particularmente não sou a favor desse processo, mas pode vir a ser vantajoso no seu caso)

              #79053
              chduarte
              Participante

                A vantagem de utilizar o append e nologging é que as transacoes vao direto para o datafile.

                Se vc desabilitar os indicies pode ser custoso para cria-los novamente e atrapalhar nas consultas.

                []

                #79055
                rosterne
                Participante

                  Olá,

                  realmente, a dica que dei seria para sistemas DW, o que não é o seu caso.

                  A dica o colega acima é válida, podendo também utlizado o “+ parallel” ao invés do “+ append”, caso seu sistema seja multiprocessado ou com o comando “ALTER SESSION FORCE PARALLEL DML;” para a sessão.

                  A execução paralela pode melhorar muito o desempenho para as operações de dados intensivos associadas com as aplicações de tomadas de decisão ou em ambientes de base de dados muito grandes.

                  O symmetric multiprocessing (SMP), os sistemas clusters e maciços sistemas paralelos (MPP) ganham os benefícios e melhora o desempenho da execução paralela, porque os processos podem ser divididos entre muitos CPUs em um único sistema do oracle.

                  Abraço.

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