- Este tópico contém 9 respostas, 5 vozes e foi atualizado pela última vez 16 anos, 10 meses atrás por
David Siqueira.
-
AutorPosts
-
4 de maio de 2009 às 10:33 pm #86558
thianolima
ParticipanteGalera 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?4 de maio de 2009 às 11:01 pm #86559Ishii
ParticipanteOlá,
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
5 de maio de 2009 às 12:11 am #86560thianolima
ParticipanteEntao o negocio ta magico…. eu tenho as tabelas
telefone : 1200 registros
funcionario : 10000 registros
tipo_telefone : 6 registrosTelefone 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
5 de maio de 2009 às 12:55 am #86561David Siqueira
ParticipanteParceiro 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
5 de maio de 2009 às 7:53 pm #86566thianolima
ParticipanteEstou colocando essa query q e um simples delete pela PK
DELETE FROM TELEFONE
WHERE FON_RECNO = 1953rodei 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= 1953Espero 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
5 de maio de 2009 às 7:54 pm #86567thianolima
ParticipanteEstou colocando essa query q e um simples delete pela PK
DELETE FROM TELEFONE
WHERE FON_RECNO = 1953rodei 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
5 de maio de 2009 às 7:59 pm #86568thianolima
ParticipanteBom 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
6 de maio de 2009 às 10:12 pm #86595cabelobh
ParticipanteCamarada, tenta enviar a estrutura das tabelas envolvidas e as FKs que elas tem.
6 de maio de 2009 às 10:17 pm #86597Rodrigo Almeida
ParticipanteUma 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
6 de maio de 2009 às 10:53 pm #86603David Siqueira
ParticipanteFazendo 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
-
AutorPosts
- Você deve fazer login para responder a este tópico.
