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

      Galera alguem poderia me ajudar com uma duvida aq na empresa.
      Nos temos dois esquemas onde as tabelas principais como cadastro de funcionario ficam em um schema e para os outros modulos ficam em outros esquemas q relacionam com o principal para nao precisarmos duplicar as tabelas. Tenho uma tabela telefone onde a mesma tem relacao com funcionarios e com tipo telefone. Ambas sao pequenas a maior funcinario nao chega a 10mil registros. Porem qdo vou deletar um telefone q esta relacionado com funcionario (ambos em esquemas diferentes), esta demorando mto … coisa de 30 a 40 segundos para excluir um unico registro. Alguem poderia me dizer os possiveis problemas?

      #86559
      Ishii
      Participante

        Olá,

        Um deles pode ser triggers, mas sempre há uma explicação da regra de negócio deles existirem. Outra que podem ser constraints cascade e com isso apagasse as tabelas filhos tambem…

        Mas so analisando um trace disso para ter certeza…

        []s Ishii

        #86560
        thianolima
        Participante

          Entao o negocio ta magico…. eu tenho as tabelas

          telefone : 1200 registros
          funcionario : 10000 registros
          tipo_telefone : 6 registros

          Telefone tem relacionamento com as outras 2 tabelas mostradas e em nenhum existe trigger apenas relacionamentos do tipo restrict. Um fato curioso foi q tirei as constraints e qdo fui deletar ainda continuo lento nao sei o pq 😕

          No Firebird e interbase acontecia da tabela ficar corrompida e dai eu rodava o gfix mas nao sei como identificar esse problema no oracle

          #86561
          David Siqueira
          Participante

            Parceiro tudo bem?..Desculpa me intrometer, mais você ja tirou um EXPLAIN desse delete pra ver onde ta pegando, em que ponto ta gerando esse problema?
            Outra questão, há um indice eficiente pra esse delete?
            Se possivel poste a query e o resultado do explain , pode ser que com isso consigamos te ajudar melhor , ok?

            Abração!!!

            David

            #86566
            thianolima
            Participante

              Estou colocando essa query q e um simples delete pela PK

              DELETE FROM TELEFONE
              WHERE FON_RECNO = 1953

              rodei no sqldeveloper o autotrace porem nao entendo nda do resultado dele

              OPERATION OBJECT NAME COST LAST_CR_B.
              DELETE STATEMENT 1
              DELETE TELEFONE 333301
              INDEX UNIQUE SCAN PK_TELEFONE 1 2
              ACCESS PREDICATE
              FON_RECNO= 1953

              Espero q consigam entender… e possam me explicar pq a unica coisa q entendi e q ele utilizou a minha chave primaria para a query..rs

              #86567
              thianolima
              Participante

                Estou colocando essa query q e um simples delete pela PK

                DELETE FROM TELEFONE
                WHERE FON_RECNO = 1953

                rodei no sqldeveloper o autotrace porem nao entendo nda do resultado dele


                OPERATION OBJECT NAME COST LAST_CR_B.
                DELETE STATEMENT 1
                DELETE TELEFONE 333301
                INDEX UNIQUE SCAN PK_TELEFONE 1 2
                ACCESS PREDICATE
                FON_RECNO= 1953

                Espero q consigam entender… e possam me explicar pq a unica coisa q entendi e q ele utilizou a minha chave primaria para a query..rs

                #86568
                thianolima
                Participante

                  Bom tentei explicar acima mas nao ficou legal entao qria pedir para o moderador apagar os topicos e deixar somente esse pq achei q aq eu conseguiria excluir meus posts como em outro forum q participo, desculpa ae pessoal. Aqui vai a imagem do trace no sqldeveloper

                  Nao entendo oq isso fala se alguem poder traduzir para mim eu agradeco

                  #86595
                  cabelobh
                  Participante

                    Camarada, tenta enviar a estrutura das tabelas envolvidas e as FKs que elas tem.

                    #86597
                    Rodrigo Almeida
                    Participante

                      Uma sugestão.

                      1 – Execute o DELETE, e veja qual o evento que está ocorrendo na view v$session_wait para a sua sessão.

                      2 – Desabilite todas as PKs e FKs, sem excessão.

                      3 – Veja como está as atividades dos discos que os datafiles da tabela estão. Pode estar com contenção de IO

                      4 – Talves sua tabela possa estar “fragmentada”, faça um MOVE TABLESPACE para uma tablespace auxiliar e apartir dela tente executar o DELETE novamente.

                      Isso pode ajudar no desempenho.

                      Abraços,

                      Rodrigo Almeida

                      #86603
                      David Siqueira
                      Participante

                        Fazendo um adendo ao que o Alphamek disse, pode ser também o caso da TABLESPACE onde esta sua tabela estar muito fragmentada, e por isso pode estar gerando eventos de espera do tipo “leitura sequencial” ou qualquer outro evento relacionado a leitura de Datafile, vale a pena checar isso .

                        Abcs.

                        David

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