Só uma pergunta : vc Captou em e-mails anteriores que, como ferramenta de
Performance, o Particionamento só serve para aquelas situações em que nos seus
SQLs majoritariamente vc vai ler Múltiplos registros de uma tabela Gigante E
via full table scan/fast index scan, sim ? Se hoje vc faz acesso via index key,
acessando um único registro (por exemplo, consultando-se o número da NF no seu
caso) o particionamento NÂO vai ser efetivo para a performance, já que não há
eliminação de registros, sim ??? Outro ponto também bem explicitado é que para
que a Eliminação de partições possa ocorrer, vc tem que estar pesquisando /
acessando principalmente os dados dentro de UMA partição, ok ? Assim, se vc
particionar por Mês E a esmagadora maioria das consultas for de NFs dentro de
um mês ok, pode haver melhora de performance, MAS se vc particionar por Dia E a
esmagadora maioria das consultas for de NFs dentro de um range de múltiplos
dias, o RDBMS Vai ter que ficar visitando N partições, o que vai exigir N
leituras de N segmentos diferentes - facilmente isso Pode ser pior para a
performance do que um único e suculento segment scan em paralelo, okdoc ???
Isso posto : tranquilamente para casos em que a chave é única e vc quer que
o RDBMS distribua múltiplos registros em partições arbitrárias, vc poderia
usar HASH PARTITIONING, veja na doc do 10g mais refs sobre isso... Caso não se
aplique a situação de usar um HASH (digamos, porque o algoritmo de hash do
RDBMS não fez uma separação equilibrada/proporcional de registros), sim, vc até
poderia usar RANGE PARTITION com a condição de range sendo um MOD no id único
do regsitro, ok , MAS Realmente tenha CERTEZA do exposto acima , ie : QUE
realmente não vão haver consultas por uma só NF E QUE normalmente a maioria das
queries realmente será satisfeita consultando-se uma só das partições, sim ??
Caso contrário é bem provável que vc não obtenha retorno desse trabalho...
[]s
Chiappa
--- Em oracle_br@yahoogrupos.com.br, Claudio Junior csjunior@... escreveu
Ola pessoal
Obrigado por terem respondido os emails. Achei muito interessante mas
infelizmente a versão 10 não ajuda muito mesmo.
Sobre o particionamento a header provavelmente vai ser pela data mesmo.
Acreditamos que seja a melhor solução para este caso pois as consultas são
sempre feitas baseando na data e assim não teremos uma boa melhora.
Agora, sobre as details, apareceram umas ideias. Uma delas é utilizar a
função mod pelo id da nota fiscal para determinar a partição. Exemplo, 100
partições e a chave seria mod(id_da_nota, 100). O que vcs acham desta ideia?
Att.
--
Claudio da Silva Junior
csjunior@...
Em 31 de outubro de 2012 11:40, Régis Pradela pradelarf@...escreveu:
Claudio, bom dia!
Neste caso o Reference Partitioning seria muito útil, mas, como seu Oracle
é 10gr2 não temos este tipo de particionamento.
Minha sugestão, baseada nas informações que você falou, seria:
1. Particionar a tabela de notas fiscais mensalmente:
- Eu disse mensalmente, mas para definir este intervalo acredito que o
ideal
seria medir o volume da dados gerados.
2. Tabela de descrição:
- É difícil dizer a melhor chave para particionamento sem saber as
principais queries que rodam sobre estas tabelas.
Dica: Verificar pela V$SQL quais os SQLs que incidem sobre esta tabela e
veja os filtros utilizados, após isto estude cada campo e verifique o qual
possui um intervalo melhor definido.
- Num chute, ignorando a dica acima e baseado nas informações que você
passou, eu faria o particionamento pelo numero da nota com um intervalo
baseado em mais ou menos o numero de notas que são gerados durante o
período
de particionamento da tabela de Notas, Ex:
- A tabela de notas está particionada mensalmente e eu sei, baseado em
números / levantamentos que fiz, que tenho uma média de 1000 notas/mês.
Neste caso faria um particionamento da tabela de detalhes pelo numero da NF
de 1000 em 1000.
Capitou a idéia?
Espero ter ajudado.
--
R.P.
DBA Oracle
Blog: www.rpradela.com.br
Oracle Database 11g Administrator Certified Professional
Oracle Database 11g Administrator Certified Associate
Oracle Database 10g Real Applications Clusters Administrator Certified
Expert (OCE)
Oracle Enterprise Linux Certified Implementation Specialist (OCE)
Oracle Database 11g Data Warehousing Certified Implementation Specialist
Oracle Exadata 11g Certified Implementation Specialist
From: Claudio Junior csjunior@...
Reply-To: oracle_br@yahoogrupos.com.br
Date: terça-feira, 30 de outubro de 2012 18:56
To: oracle_br@yahoogrupos.com.br
Subject: [oracle_br] Duvidas sobre particionamento
Pessoal
Gostaria de obter opiniões do pessoal da lista sobre particionamento
de tabelas.
Estou tentando melhorar um esquema de tabelas no qual temos a seguinte
estrutura:
1. tabela de notas fiscais que tem um