Pular para o conteúdo
Visualizando 6 posts - 1 até 6 (de 6 do total)
  • Autor
    Posts
  • #85149
    Avatar de JamirJrJamirJr
    Participante

      Pessoal, estou com a seguinte dúvida:
      – na tentativa de excluir um registro na tabela filha, o oracle vai de alguma forma na tabela pai?

      detalhe:
      – a tab pai é muito acessada
      – existe apenas a fk para a filha

      consequencia: a sessao esta bloqueando uma fila de usuarios

      fiz um teste:
      – lock(lock table in exclusive mode) na tab pai
      – tentei excluir um registro na filha… travou td!

      nao sei se este teste valeu(como o oracle faz), mas pensei que não existisse isso, se fosse o contrario td bem!

      #85150
      Avatar de vierivieri
      Participante

        Cara verifique se existe índice na chave estrangeira,
        se não tiver o Oracle irá bloquear toda a tabela.

        [color=blue] 1———————–>N
        pk(índice) —– > fk(índice)[/color]

        já vi sistemas com muita atualização
        ficarem mto lento por conta disso.

        []s

        #85204
        Avatar de JamirJrJamirJr
        Participante

          Realmente não existe indice, além disso:

          pai——————-filho
          cod1(pk)————cod1(pk)-indice de pk
          ———————-cod1(fk)-sem indice

          Mesmo sem indice de fk, esse indice de pk não resolveria?

          Sei q foram infelizes na modelagem, então qual seria a melhor solução para resolver de vez?

          Muito obrigado

          #85206
          Avatar de vierivieri
          Participante

            Não entendi muito bem oque descreveu nesse ultimo post.

            Mas a oraclle recomenda que todas colunas que compoem a pk
            ea fk sejam indexadas em tbps diferentes.

            Entra no E.M e verifica o plano de execução da alteração
            veja se está fazendo full na tabela filha e/ou pai

            []s

            #85210
            Avatar de JamirJrJamirJr
            Participante

              explicando:

              na tab filha tem um campo(cod1), o qual é pk e tem o mesmo nome do campo pk da tabela pai.

              entao existe o indice para a pk(cod1), mas nao existe para a fk(que é o mesmo campo)

              fiz o teste novamente, do lock table, desta vez funcionou, ou seja, exclui da tabela filha sem ir na tabela pai.

              é complicado analisar pelo EM pois está na produção e o comando é de ‘delete’, vou montar o esquema noutro ambiente

              #85212
              Avatar de vierivieri
              Participante

                então crie o índice
                nas colunas que compoem a fk da tabela pai…

                foi isso que vc fez?

                []s

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