- Este tópico contém 8 respostas, 2 vozes e foi atualizado pela última vez 16 anos, 9 meses atrás por
mpvargas.
-
AutorPosts
-
4 de março de 2009 às 6:27 pm #85580
mpvargas
ParticipanteCaros Amigos,
Atualmente tenho uma tabela particionada no banco, mas não consigo enxergar se a mesma traz algum benefício até pelo fato de usarmos um ERP um tanto complicado. Como iremos trocar o servidor e estou mudando o RAID, distribuindo tablespaces e logs em discos diferentes, tenho certeza que vou ter um ganho de performance. Gostaria de saber se é interessante eu manter o particionamento da tabela ou não? E como faço para saber se a mesma está trazendo benefício no meu ambiente atual?
Obrigado.4 de março de 2009 às 6:49 pm #85582Marcio68Almeida
ParticipanteTabelas são particionadas para facilitar as transações, sempre são sugeridas para grandes massas de dados, acima de milhões de linhas…
Imagine uma tabela que registre todas as transações de uma companhia telefônica, todas as ligações, mensagens, etc…
Então você vai “quebrar” a tabela em partes, facilitando assim as transações de insert, update, delete e query.
Normalmente quebra-se essas tabelas por ano, dependendo do número de transações, pode ser quabrado por semestre e até mesmo por mês.
A grande vantagem é que quando eu for consultar uma informação lá de janeiro de 1989, não preciso consultar toda a tabela, apenas consulto a partição onde a informação se encontra.
Quando vou atualizar uma informação, vou atualizar a parte do índice que está diretamente relacionada à parte da tabela.
A desvantagem é que, quando se cria um índice, você tem que cria-lo particionado e respeitando as restrições de particionamento.
Outra desvantagem é que, toda vez que chega o momento de gerar uma nova partição, o DBA tem que estar atento para não deixar passar e ter dor de cabeça depois…Se sua tabela não é grande, não tem motivo, se é grande, verifique os critérios de particionamento e seus respectivos índices…
4 de março de 2009 às 7:18 pm #85587mpvargas
ParticipanteMarcio,
Minha Tabela atualmente tem aproximadamente 5milhões de linhas…
Ela está particionada por ano… mas os índices não são particionados…
Eu utilizo a query abaixo para Monitorar os processos e exibir SQL em execução:Select p.spid, s.sid, s.serial#, p.pga_used_mem, p.pga_alloc_mem, p.pga_freeable_mem, pga_max_mem, sql.sql_text,
s.status, s.server, s.logon_time,
TO_CHAR (TRUNC (last_call_et / 3600), ‘009’) || ‘:’ ||
Case When TRUNC (last_call_et / 3600) >= 1 Then
TO_CHAR (MOD ((last_call_et – (3600 * TRUNC (last_call_et / 3600))) / 3600, 2) * 60, ’09’)
Else
TO_CHAR (MOD (last_call_et / 3600, 2) * 60, ’09’)
End inatividade, s.machine, s.program
From v$session s, v$process p, (Select distinct sql_text, address From v$sql sql ) sql
Where s.username = ‘MSIGA’
And status = ‘ACTIVE’
And s.paddr = p.addr (+)
And s.sql_address = sql.address (+)
Order by p.spid, s.last_call_et descA minha dúvida é que quando eu executo a query acima, o SQL que se refere a tabela aparece repetida várias vezes, exibindo vários SPID, vários SID e diversos valores de alocação de PGA.
Esse é o funcionamento normal. As linhas se repetem mesmo?
4 de março de 2009 às 8:05 pm #85592Marcio68Almeida
ParticipanteSobre as colunas que aparecem repetidas…
Na coluna PROGRAM aparece entre parênteses (P0001) ???
Se sim, é por que o pessoal está usando parallel querye…
Teoricamente é uma boa opção se bem definida…
Quantas CPUs tem o seu servidor ???Índices não particionados em tabelas particionadas é o mesmo que colocar gasolina comum em uma BMW, funciona, mas…
4 de março de 2009 às 9:43 pm #85600mpvargas
ParticipanteOs SQLs que aparecem repetidos, na coluna PROGRAM aparecem números diferentes… (P001), (P002), (P003)…
Quanto ao uso de parallel queries, aparecem o seu uso no Spotlight.
Minha CPU tem 1 processador com 4 núcleos (quad core).
Quanto ao uso dos índices particionados, como eu faço pra criá-los?
Obrigado.4 de março de 2009 às 9:56 pm #85604Marcio68Almeida
Participante[quote=”mpvargas”:1wb3pe4e]Os SQLs que aparecem repetidos, na coluna PROGRAM aparecem números diferentes… (P001), (P002), (P003)…
Quanto ao uso de parallel queries, aparecem o seu uso no Spotlight.
Minha CPU tem 1 processador com 4 núcleos (quad core).
Quanto ao uso dos índices particionados, como eu faço pra criá-los?
Obrigado.[/quote]
Os números são diferentes por que é a divisão doprocesso P000, P001, P002 e P003 significa que o processo foi “quebrado” em quatro para processamento paralelo.
Se o seu servidor possuisse mais processadores, apareceriam mais P00x
Para criar o índice particionado basta seguir as mesmas parametrizações do partionamento da tabela. A sintaxe você vai encontrar no nosso amigo google… 😀
Também é bom lembrar que colocar as partições (tanto de tabela quanto de índice) em tablespaces diferentes ajuda na administração e manutenção do banco.5 de março de 2009 às 6:10 pm #85619mpvargas
ParticipanteMárcio,
Para a tabela particionada, na verdade aparecem mais de 10 processos.
O fato do processo estar sendo dividido e estar usando processamento paralelo significa que o banco está funcionando de forma correta, digo, com a configuração correta?
Então no caso estou tendo ganhos com o particionamento da tabela e seria interessante mantê-la particionada e particionar também os índices?
Obrigado pela ajuda.5 de março de 2009 às 6:22 pm #85620Marcio68Almeida
ParticipanteBom…
Tem coisas que só é possível responder acompahando os processos.
A princípio, se eles estão usando parallel query em uma tabela particionada é por que estão usando, ou tentando usar, as melhores formas de programação…
É aconselhavel manter a tabela particionada como já se encontra.
É aconselhável refazer os índices de forma que também sejam particionados.
Também é aconselhável rever as consultas para ver se estão aproveitando os recursos que o banco oferece para performace.5 de março de 2009 às 7:51 pm #85623mpvargas
ParticipanteOK Márcio
Obrigado pela ajuda.
😀 -
AutorPosts
- Você deve fazer login para responder a este tópico.