- Este tópico contém 6 respostas, 4 vozes e foi atualizado pela última vez 18 anos, 12 meses atrás por
rosterne.
-
AutorPosts
-
19 de março de 2007 às 10:39 pm #79046
punk_doido
ParticipanteOla galera,
No banco Oracle 9i, tenho uma tabela de uns 15 campos que somente terá insert´s de uma única aplicação que roda 24×7. Média de 2 milhões de registros por dia. Não tem update e delete somente uma rotina de limpeza/backup de registros.
Alguem pode me ajudar com alguma dica sobre o que fazer para aumentar o desempenho do insert nessa tabela ? Ela possui alem do indice PK, uma unique de uns 6 campos chaves para garantir que não existem dados duplicados e mais 2 indices para consultas em campos importantes.Os parametros PCTFREE e PCTUSED já deixei como 1 e 99 respectivamente.
Obrigado pela ajuda!
20 de março de 2007 às 3:58 pm #79049chduarte
ParticipanteVc pode fazer o seguinte para melhor o desempenho:
Criar um tablespace so para ela com NOLOGGING em um disco rapido.
Criar a tabela e os indices com NOLOGGING.
Na clausula insert colocar o hint append como segue:
insert /*+ append */ into tabela values(xxx);
Se for banco 9 crie o tablespace com uniform size multiplo do tamanho da sua tabela.Lembre que operacoes nologging sao direct path insert. Entao sua tablespace ficara como norecoverable e as informacoes nao vao para archive. Entao se vc precisar de backup para esta tabela tenha uma boa estrategia de backup incremental. Talvez utilizando RMAN.
[]
20 de março de 2007 às 4:01 pm #79050rosterne
ParticipanteOlá,
Você pode colocar o índices no momento da carga em DISABLE VALIDATE.
Com DISABLE VALIDATE A constraint continua válida, mas não é como na cláusula ENABLE que verifica apenas linhas novas e atualizadas.
Para as chaves primárias e unique, o índice é removido. Isto é muito importante para o processo de carga de um DW por exemplo, pois a criação de índices é um overhead muito grande (lembre-se: um índice sobre a chave primária de uma tabela, é quase tão grande quanto a própria, e praticamente não tem utilidade para o otimizador de consultas).
Espero ter ajudado.
20 de março de 2007 às 5:17 pm #79051punk_doido
ParticipanteRealmente quanto ao backup no momento não está definida a estratégia, por isso não está sendo gerado Archive. Mas a tablespace está como LOGGING, há necessidade de no momento desativar essa opção ? Ou só pelo fato de não estar gerando Archive eu já estou ganhando o desempenho relacionado com esse assunto ?
Quanto a desabilitar os indices no momento da carga, ainda estou na duvida… a tabela é alimentada o tempo todo (24×7), enquanto isso acontece tem relatórios, outros processos, diversas execuções e pesquisas nela, que utilizam o indice PK e os outros com excessao da Unique. Se eu manter o tempo todo o indice desativado, vou prejudicar os outros acessos externos que utilizam os indices certo ?
Valeu pela ajuda galera!!! E desculpem se estou sendo muito chato!!!
20 de março de 2007 às 5:39 pm #79052Marcio68Almeida
ParticipanteO fato de não estar gerando archive é um problema a parte, as transações estão sendo registradas no REDO e este gera I/O, que foi o que nosso colega sugeriu que fosse desabilitado.
Quanto aos índices, você tem que ver qual a estratégia a ser adotada, pois se fazem consulta o dia inteiro também, não vai conseguir tempo para desabilitar e habilitar os índices… (eu particularmente não sou a favor desse processo, mas pode vir a ser vantajoso no seu caso)20 de março de 2007 às 5:48 pm #79053chduarte
ParticipanteA vantagem de utilizar o append e nologging é que as transacoes vao direto para o datafile.
Se vc desabilitar os indicies pode ser custoso para cria-los novamente e atrapalhar nas consultas.
[]
20 de março de 2007 às 8:30 pm #79055rosterne
ParticipanteOlá,
realmente, a dica que dei seria para sistemas DW, o que não é o seu caso.
A dica o colega acima é válida, podendo também utlizado o “+ parallel” ao invés do “+ append”, caso seu sistema seja multiprocessado ou com o comando “ALTER SESSION FORCE PARALLEL DML;” para a sessão.
A execução paralela pode melhorar muito o desempenho para as operações de dados intensivos associadas com as aplicações de tomadas de decisão ou em ambientes de base de dados muito grandes.
O symmetric multiprocessing (SMP), os sistemas clusters e maciços sistemas paralelos (MPP) ganham os benefícios e melhora o desempenho da execução paralela, porque os processos podem ser divididos entre muitos CPUs em um único sistema do oracle.
Abraço.
-
AutorPosts
- Você deve fazer login para responder a este tópico.