- Este tópico contém 4 respostas, 5 vozes e foi atualizado pela última vez 15 anos, 8 meses atrás por
fsitja.
-
AutorPosts
-
16 de julho de 2010 às 6:25 pm #95083
Anônimo
Ola
Tenho uma dúvida sobre particionamento, vocês podem me ajudar ?
Quando eu faço particionamento de tabelas é preciso mudar também a sql que fazem acesso a essa tabela, ou não é preciso mudar em nada as sqls ?
Tenho Oracle 10.2.0.4 e SO AIX
Agradeço
Marco Aurelio
16 de julho de 2010 às 6:39 pm #95084Regis Araujo
ParticipanteFala Marco.. bom dia..!
Então, na verdade o aconselhavel em selects q envolvam tabelas particionadas, é vc sempre usar a chave de particionamento para fazer o seu select…
Vou dar um exemplo..
Vamos dizer q eu tenho uma tabela onde são registradas todas as vendas de uma loja.. esta tabela tem cerca de 10 milhoes de registros, eu particionei esta tabela por MES e possuo dados de 2009 inteiro… ou seja.. tenho 1 tabela com 12 partições..
Ai eu vou montar um select e no WHERE eu faço pesquisa por CLIENTE.. o meu particionamento não adiantou de nada… pois de qualquer jeito vai ser necessário varrer toda a tabela (12 partiçoes) para achar determinado cliente..
Agora eu coloco uma clausula AND passando MES = 2 (fevereiro)..
Vc concorda comigo que agora eu não vou mais precisar ler 12 partições.. correto.. vou ler apenas 1 partição inteira para achar determinado cliente..
Isto vai me dar ganho de performance, já que não vou precisar ler 10 milhoes de linhas.. devo ler aproximadamente 800 mil linhas mais ou menos..
Ou seja.. vc vai precisar ajustar os seus SELECTS para colocar a clausula WHERE pela chave de particionamento.. mas somemente se o select permitir isto.. pois em muitos casos.. realmente é necessário fazer um FULL SCAN na tabela toda para achar determinado registro… Então vai depender da necessidade e de como vc particionou suas tabelas..
Bom.. espero que tenha lhe ajudado..
Abraços..!
16 de julho de 2010 às 6:43 pm #95086brunopb
Participanteoi cara.. nao precisa mudar seus sqls nao… o oracle faz tudo
17 de julho de 2010 às 1:03 am #95096David Siqueira
ParticipanteOpa!!!..
Então, dependendo do tipo de particionamento que você escolher, na hora que você for realizar uma query nestas tabelas e de acordo com seu WHERE a partição acessada ou as partições acessadas serão aquelas que satisfizerem a sua condição, uma boa maneira de você ver isso na prática é usando um EXPLAIN PLAN, você verá que por exemplo se seu particionamento for por range de datas ele ira acessar a partição da tabela que corresponde as datas que você estiver usando no seu Where.Abraço.
19 de julho de 2010 às 4:21 pm #95110fsitja
ParticipanteO ideal é que seja feito o oposto: durante a modelagem física das suas tabelas você tenha uma noção de como serão feitas as principais consultas a essas tabelas, para então projetar índices e particionamento.
Ou seja, a grosso modo, seus SQLs é que motivam ou definem sua estratégia de particionamento, e não o contrário.
Quando falo SQL, é necessário considerar também características de transações que modificam as tabelas, pensando nos inserts, updates e deletes também.
-
AutorPosts
- Você deve fazer login para responder a este tópico.