Pular para o conteúdo
  • Este tópico contém 18 respostas, 5 vozes e foi atualizado pela última vez 16 anos, 9 meses atrás por Thiago Vilhena.
Visualizando 15 posts - 1 até 15 (de 19 do total)
  • Autor
    Posts
  • #87011
    Thiago Vilhena
    Participante

      Boa tarde pessoal,

      Tipo tava vendo por aqui uma parada!!

      o que é mais custozo ao banco um insert com append ou sem append??

      e como ficaria um insert com append??

      sem append fica assim insert into scott.tab_sped_teste1 (id,funcionario) values(1,’thiago’);

      com append como que fica essa query???

      #87015
      David Siqueira
      Participante

        Thiago, dê uma visitada nesse link abaixo , você vai descobrir quais os HINTS mais usados, e suas respectivas funções e utilizações :

        http://www.oradev.com/hints.jsp

        Abraço.

        David

        #87018
        Thiago Vilhena
        Participante

          beleza parceiro!! vo dar uma olhada e posto aqui duvidas!! xDDD

          #87019
          Thiago Vilhena
          Participante

            beleza cara vi la tipo um exemplo de insert com append poderia ser assim

            select ‘insert into values();’ from ;

            ???

            #87020
            David Siqueira
            Participante

              Não sei o que vc esta tentando fazer..rsss.
              Mais geralmente eu uso APPEND assim :

              insert /* APPEND */ into as select * from ;

              é apenas um exemplo , vc pode usa-lo da melhor maneira que quiser.

              Abcs

              David[/code]

              #87021
              Thiago Vilhena
              Participante

                David desculpa cara mas eu estou viajando nesse negocio de append,

                eu li no site que voce me enviou e ainda nao entendi que esse hint infeliz faz!!

                #87024
                David Siqueira
                Participante

                  A melhor maneira de você descobrir pra que ele serve é fazendo um teste de Plano de execução com o uso de APPEND no seu processo de Insert e sem ele, você vai notar uma significativa diferença, basicamente ele é pra otimizar os seus processos de Insert, tornando-os mais ageis, em tabelas definidas com NOLLOGIN um comando insert com APPEND evita utilização de REDO desnecessária, vai direto por ROWID.

                  Abcs

                  David

                  #87028
                  ramasine
                  Participante

                    A opção de APPEND MODE, que é um INSERT onde o banco :
                    – NÃO procura no “meio” dos datafiles por espaço livre, é feito sempre numa àrea livre mais ao fim do datafile
                    – NÃO gera muitos bytes de log, pois necessariamente já que o
                    INSERT é feito numa área livre não há “versão anterior” desses
                    blocos no disco, claramente no datafile eles estão vazios
                    – e mais importante, quase não gera informação de desfazer ( UNDO/ROLLBACK), por definição necessariamente num bd
                    relacional TODA e QUALQUER operação de DML obrigatoriamente tem que ser passível de ser desfeita enquanto o bd não receber um COMMIT,
                    então o bd Oracle normalmente além do log file é obrigado a manter
                    informação de desfazer, o chamado ROLLBACK ou UNDO. Claro, num insert onde é garantido que os blocos estavam em branco como é o caso do APPEND mode, não há o que desfazer (pois os blocos antes da operação estavam vazios!!), portanto será gerado muitíssimo menos
                    undo/rollback.

                    Esse INSERT pode feito ou por vc (digitando um comando
                    tipo INSERT /*+ APPEND */ (select from fontedosdadosainserir), ou por
                    algumas tools Oracle como o sql*loader carregando de um arquivo-
                    texto.

                    Abs
                    Marcelo

                    #87030
                    Rodrigo Mesquita
                    Participante

                      Thiago,

                      Acredito que o que estão querendo é que vc realize uma medição de qual insert tem melhor tempo de execução.Leia o que o ramasine falou que vc vai entender bem a diferença entre os dois inserts.

                      no sqlplus faça assim:

                      Set timing on;
                      — faça o insert normal
                      insert into select * from ;
                      — depois execute o insert com o append
                      insert /* APPEND */ into as select * from ;

                      #87031
                      David Siqueira
                      Participante

                        Boa Ramasine, excelente explanação.

                        Abcs.

                        David

                        #87033
                        Thiago Vilhena
                        Participante

                          Pessoal voces sao 1000, tipo eu entendi o que era pra fazer a unica duvida que ficou, por exemplo ROWNUM, WHERE isso é um hint append?

                          #87035
                          ramasine
                          Participante

                            Thiago,

                            O ROWNUM limita a quantidade de linhas do resultado…

                            Ex: select *
                            from
                            ( select *
                            from tabela
                            order by critério )
                            where ROWNUM <= 10

                            Traz apenas as 10 primeiras linhas que atendem a consulta!

                            Abs

                            Marcelo Ramasine

                            #87036
                            Thiago Vilhena
                            Participante

                              to procurando na documentação do oracle ve se eu acho exemplos desse cara ai!

                              #87041
                              Thiago Vilhena
                              Participante

                                Beleza marcelao. Mas rownum é um hint append???

                                #87042
                                ramasine
                                Participante

                                  Não Thiago!

                                  O rownum é um pseudo-código do Oracle para a identificação de registros!

                                  Ex: select * from tabela where rownum between 1 and 5;

                                  Traz os 5 primeiros colocados….

                                  Mas o rownum não é um HINT de append, se bem entendi o que vc colocou..

                                  Abs

                                  Marcelo

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