Estou fazendo um delete e estou verificando por dois campos na clausula WHERE, CODIGO E DATA. e esses dois campos são indices. A tabela tem mais de 12 milhoes de registros e o DELETE esta demorando 13 horas.
Estou pensando em particionar essa tabela, mas não tenho muita experiencia nisso. Como eu poderia particionar essa tabela? particionar melhoraria a performance?
Tabela particionada
- stcoutinho
- Moderador
- Mensagens: 850
- Registrado em: Qua, 11 Mai 2011 5:15 pm
- Localização: são Paulo - SP
Olá cleberz,
Quando você particiona uma tabela no oracle, é como você fisicamente transformasse uma tabela em um grupo de "tabelas menores". Como programador, você sempre irá acessar a tabela normalmente mas, internamente, o ORACLE irá verificar a melhor forma de pequisar as informações desejadas entre estas tabelinhas (partições) que compõe a tabela ORACLE.
Usar ou não usar o particionamento? Bem, dependendo das pesquisas que você costuma fazer nos dados da tabela, você pode ter uma performance melhor ou pior.
Por exemplo, digamos que você particionou uma tabelas de vendas por data (de 01/mês/ano ate 31/mês/ano). Se às suas pesquisas se concentrarem em vendas do mês, a performance pode ser agilizada, pois o ORACLE irá se concentrar na partição do mês/ano desejado. Mas se você quiser fazer consultas para consolidar os dados de um semestre, bimestre ou ano, o ORACLE terá que acessar cada uma destas partições para reunir a informação solicitada. ~
Não existe uma regrá única para se particionar uma tabela. Você tem várias formas de organizar as partições (listas, ranges, etc), desta forma você vai precisar fazer alguns testes para identificar o melhor particionamento para suas necessidades.
Entretanto, o particionamento não funciona sozinho. Você terá que elaborar rotinas para criar novas partições com o decorrer do tempo e rotinas para remover as partições que atingirem o período máximo que você deseja de histórico. Operações também serão necessárias para organizar indices globais (um índice que pode incorporar todas as partições da tabela).
Um outro ponto: posso estae enganado, mas o uso do particionamento pode envolver custos junto à ORACLE para uso desta tecnologia.
Abaixo, segue alguns links de manuais e artigos que falam sobre particionamento:
http://www.oracle.com/technetwork/pt/da ... 98-ptb.pdf
http://profissionaloracle.com.br/blogs/ ... são-geral/
http://download.oracle.com/docs/cd/B193 ... tm#i462869
http://download.oracle.com/docs/cd/B193 ... m#ADMIN017
http://www.oracle.com/br/products/datab ... index.html
Abraços,
Sergio Coutinho
Quando você particiona uma tabela no oracle, é como você fisicamente transformasse uma tabela em um grupo de "tabelas menores". Como programador, você sempre irá acessar a tabela normalmente mas, internamente, o ORACLE irá verificar a melhor forma de pequisar as informações desejadas entre estas tabelinhas (partições) que compõe a tabela ORACLE.
Usar ou não usar o particionamento? Bem, dependendo das pesquisas que você costuma fazer nos dados da tabela, você pode ter uma performance melhor ou pior.
Por exemplo, digamos que você particionou uma tabelas de vendas por data (de 01/mês/ano ate 31/mês/ano). Se às suas pesquisas se concentrarem em vendas do mês, a performance pode ser agilizada, pois o ORACLE irá se concentrar na partição do mês/ano desejado. Mas se você quiser fazer consultas para consolidar os dados de um semestre, bimestre ou ano, o ORACLE terá que acessar cada uma destas partições para reunir a informação solicitada. ~
Não existe uma regrá única para se particionar uma tabela. Você tem várias formas de organizar as partições (listas, ranges, etc), desta forma você vai precisar fazer alguns testes para identificar o melhor particionamento para suas necessidades.
Entretanto, o particionamento não funciona sozinho. Você terá que elaborar rotinas para criar novas partições com o decorrer do tempo e rotinas para remover as partições que atingirem o período máximo que você deseja de histórico. Operações também serão necessárias para organizar indices globais (um índice que pode incorporar todas as partições da tabela).
Um outro ponto: posso estae enganado, mas o uso do particionamento pode envolver custos junto à ORACLE para uso desta tecnologia.
Abaixo, segue alguns links de manuais e artigos que falam sobre particionamento:
http://www.oracle.com/technetwork/pt/da ... 98-ptb.pdf
http://profissionaloracle.com.br/blogs/ ... são-geral/
http://download.oracle.com/docs/cd/B193 ... tm#i462869
http://download.oracle.com/docs/cd/B193 ... m#ADMIN017
http://www.oracle.com/br/products/datab ... index.html
Abraços,
Sergio Coutinho
- fbifabio
- Moderador
- Mensagens: 199
- Registrado em: Ter, 22 Fev 2011 1:51 pm
- Localização: São Paulo - SP
- Contato:
Fábio Prado
www.fabioprado.net
www.fabioprado.net
@leberz
Segue outro artigo sobre tabela particionada: http://www.fabioprado.net/2011/02/crian ... -para.html. Cuidado, você precisa de licenciamento para usar a feature de particionamento!
[]s
Segue outro artigo sobre tabela particionada: http://www.fabioprado.net/2011/02/crian ... -para.html. Cuidado, você precisa de licenciamento para usar a feature de particionamento!
[]s
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Bing [Bot] e 4 visitantes