RE: [oracle_br] Sobre Indices em FKs

2008-09-18 Por tôpico Claro, Eduardo
Alvaro,

Se você está executando a query exatamente como colocou, ela não vai retornar 
nada mesmo, pois o nomes de eventos de espera no Oracle (como o enq que você 
está procurando) são com letras minúsculas. Portanto, a query deveria ser:

SELECT event#, name FROM v$event_name
WHERE UPPER(name) LIKE 'enq: TM%';

Quanto a indices em FKs, via de regra é uma boa prática tê-los, pois 
provavelmente estas tabelas pai e filha serão lidas juntas (com JOIN), certo? 
Numa consulta destas, a falta do índice pode ocasionar FULL SCANs indesejáveis. 
Ainda, se a tabela pai sofre UPDATEs na coluna chave ou DELETEs, o Oracle 
fatalmente vai procurar correspondências na tabela filha. Se não tiver índice, 
mais FULL SCANs à vista e possivelmente LOCKS na TABELA FILHA INTEIRA...

Veja uma explicação mais detalhada em 
http://asktom.oracle.com/pls/asktom/f?p=100:11:0P11_QUESTION_ID:292016138754

[]s

Eduardo Claro

-Original Message-
From: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] On Behalf Of 
Alvaro Luiz Mansor Neto
Sent: quarta-feira, 17 de setembro de 2008 17:13
To: oracle_br@yahoogrupos.com.br
Subject: [oracle_br] Sobre Indices em FKs

Boa tarde a todos.
Banco de Dados: Oracle 9i ( 9.2.0.8 ).
Eu tenho muito ganho de performance criando Indices em todas FKs de tabelas
para evitar Lock em nível de tabela ?
Ja ouvi falar por alguns consultores q é crucial em uma operação de
Performance em banco ter indices em todas FKs.
Aprendi que posso me basear no SELECT abaixo, para saber quais são os
eventos em espera no banco, verificando o resultado da linha ( se houver
resultado ) na view v$event_name ( para saber o motivo da espera ).

SELECT event#, name FROM v$event_name
WHERE UPPER(name) LIKE 'ENQ: TM%'

Só q no meu banco não tenho nenhum resultado de eventos em espera. A idéia é
realmente criar indices para evitar um waiting futuro ou ir planejando o
tuning de acordo com o q acontece no dia-a-dia ?

Abraço
Alvaro


[As partes desta mensagem que não continham texto foram removidas]




--
Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--
Funções, Procedures, propostas de emprego - O GRUPO ORACLE_BR TEM SEU PROPRIO 
ESPAÇO! VISITE: http://www.oraclebr.com.br/  

 Links do Yahoo! Grupos




Re: [oracle_br] Sobre Indices em FKs

2008-09-18 Por tôpico Alvaro Luiz Mansor Neto
Eduardo. Sobre o select tranquilo ..Estava assim mesmo e não resultado.
Sobre o artigo, é muito interessante... vlw mesmo. O negócio então é mandar
indices em FKs como regra de implementação.
Vlw !!!
Abraço




Em 18/09/08, Claro, Eduardo [EMAIL PROTECTED] escreveu:

   Alvaro,

 Se você está executando a query exatamente como colocou, ela não vai
 retornar nada mesmo, pois o nomes de eventos de espera no Oracle (como o
 enq que você está procurando) são com letras minúsculas. Portanto, a query
 deveria ser:

 SELECT event#, name FROM v$event_name
 WHERE UPPER(name) LIKE 'enq: TM%';

 Quanto a indices em FKs, via de regra é uma boa prática tê-los, pois
 provavelmente estas tabelas pai e filha serão lidas juntas (com JOIN),
 certo? Numa consulta destas, a falta do índice pode ocasionar FULL SCANs
 indesejáveis. Ainda, se a tabela pai sofre UPDATEs na coluna chave ou
 DELETEs, o Oracle fatalmente vai procurar correspondências na tabela filha.
 Se não tiver índice, mais FULL SCANs à vista e possivelmente LOCKS na TABELA
 FILHA INTEIRA...

 Veja uma explicação mais detalhada em
 http://asktom.oracle.com/pls/asktom/f?p=100:11:0P11_QUESTION_ID:292016138754

 []s

 Eduardo Claro

 -Original Message-
 From: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br[mailto:
 oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br] On Behalf
 Of Alvaro Luiz Mansor Neto
 Sent: quarta-feira, 17 de setembro de 2008 17:13
 To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br
 Subject: [oracle_br] Sobre Indices em FKs

 Boa tarde a todos.
 Banco de Dados: Oracle 9i ( 9.2.0.8 ).
 Eu tenho muito ganho de performance criando Indices em todas FKs de tabelas
 para evitar Lock em nível de tabela ?
 Ja ouvi falar por alguns consultores q é crucial em uma operação de
 Performance em banco ter indices em todas FKs.
 Aprendi que posso me basear no SELECT abaixo, para saber quais são os
 eventos em espera no banco, verificando o resultado da linha ( se houver
 resultado ) na view v$event_name ( para saber o motivo da espera ).

 SELECT event#, name FROM v$event_name
 WHERE UPPER(name) LIKE 'ENQ: TM%'

 Só q no meu banco não tenho nenhum resultado de eventos em espera. A idéia
 é
 realmente criar indices para evitar um waiting futuro ou ir planejando o
 tuning de acordo com o q acontece no dia-a-dia ?

 Abraço
 Alvaro

 [As partes desta mensagem que não continham texto foram removidas]

 

 --
 Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de
 inteira responsabilidade de seus remetentes.
 Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/
 --
 Funções, Procedures, propostas de emprego - O GRUPO ORACLE_BR TEM SEU
 PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/
 -- Links do Yahoo!
 Grupos

 



[As partes desta mensagem que não continham texto foram removidas]