Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Oracle 11G - Efeito de desempenho da indexação na inserção


É verdade que é mais rápido modificar uma tabela se você não tiver que modificar um ou mais índices e possivelmente também realizar a verificação de restrição, mas também é bastante irrelevante se você tiver que adicionar esses índices. Você deve considerar a mudança completa no sistema que deseja efetuar, não apenas uma única parte dele.

Obviamente, se você estiver adicionando uma única linha em uma tabela que já contém milhões de linhas, seria tolice descartar e reconstruir índices.

No entanto, mesmo se você tiver uma tabela completamente vazia na qual adicionará vários milhões de linhas, ainda poderá ser mais lento adiar a indexação para depois.

A razão para isso é que tal inserção é melhor executada com o mecanismo de caminho direto e, quando você usa inserções de caminho direto em uma tabela com índices, são construídos segmentos temporários que contêm os dados necessários para construir os índices (dados mais rowids ). Se esses segmentos temporários forem muito menores do que a tabela que você acabou de carregar, eles também serão mais rápidos para varrer e construir os índices.

a alternativa, se você tiver cinco índices na tabela, é incorrer em cinco varreduras completas da tabela depois de carregá-la para construir os índices.

Obviamente, existem enormes áreas cinzentas envolvidas aqui, mas bem feito para:
  1. Questionar a autoridade e as regras gerais e
  2. Executar testes reais para determinar os fatos em seu próprio caso.

Editar:

Outras considerações -- você executa um backup enquanto os índices são descartados. Agora, após uma restauração de emergência, você precisa ter um script que verifique se todos os índices estão no lugar, quando você tiver a empresa respirando fundo para recuperar o sistema.

Além disso, se você estiver determinado a não manter os índices durante um carregamento em massa, não descarte os índices - desative-os. Isso preserva os metadados para a existência e definição dos índices e permite um processo de reconstrução mais simples. Apenas tome cuidado para não reativar acidentalmente os índices truncando a tabela, pois isso tornará os índices desabilitados ativados novamente.