Oracle
 sql >> Base de données >  >> RDS >> Oracle

Oracle 11G - Effet sur les performances de l'indexation à l'insertion

Il est vrai qu'il est plus rapide de modifier une table si vous n'avez pas également à modifier un ou plusieurs index et éventuellement à effectuer également une vérification des contraintes, mais cela n'a également aucune importance si vous devez ensuite ajouter ces index. Vous devez considérer le changement complet du système que vous souhaitez effectuer, pas seulement une seule partie de celui-ci.

Évidemment, si vous ajoutez une seule ligne dans une table qui contient déjà des millions de lignes, il serait insensé de supprimer et de reconstruire les index.

Cependant, même si vous avez une table complètement vide dans laquelle vous allez ajouter plusieurs millions de lignes, il peut être encore plus lent de reporter l'indexation à plus tard.

La raison en est qu'une telle insertion est mieux réalisée avec le mécanisme de chemin direct, et lorsque vous utilisez des insertions de chemin direct dans une table contenant des index, des segments temporaires sont créés qui contiennent les données nécessaires à la construction des index (données plus rowids ). Si ces segments temporaires sont beaucoup plus petits que la table que vous venez de charger, ils seront également plus rapides à analyser et à partir desquels créer les index.

l'alternative, si vous avez cinq index sur la table, consiste à effectuer cinq balayages complets de la table après l'avoir chargée afin de créer les index.

Évidemment, il y a d'énormes zones grises impliquées ici, mais bravo pour :

  1. Remettre en question l'autorité et les règles générales, et
  2. Exécution de tests réels pour déterminer les faits dans votre propre cas.

Modifier :

Autres considérations -- vous exécutez une sauvegarde pendant que les index sont supprimés. Maintenant, après une restauration d'urgence, vous devez disposer d'un script qui vérifie que tous les index sont en place, lorsque vous avez l'entreprise à bout de souffle pour remettre le système en marche.

De plus, si vous étiez absolument déterminé à ne pas conserver les index lors d'un chargement en bloc, ne supprimez pas les index - désactivez-les à la place. Cela préserve les métadonnées pour l'existence et la définition des index, et permet un processus de reconstruction plus simple. Veillez simplement à ne pas réactiver accidentellement les index en tronquant la table, car cela réactiverait les index désactivés.