|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre régulier
![]() Inscription : avril 2003 Messages : 131 ![]() |
Bonjour,
Je déplace une table (9i) sur une nouvelle instance (10g). La procédure est la suivante: 1/ création de la table 2/ copie des données via dblink Sur cette table j'ai trois index. Est-il plus interessant en terme de temps de générer les index une fois toutes les données présentent, ou bien de créer les index à la suite de la création de la table, avant l'insertion des données ? Est ce qu'une méthode est plus avantageuse que l'autre ? Merci d'avance. |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Inscription : juin 2007 Messages : 1 497 ![]() |
ça sera sans doute plus rapide d'insérer les données et ensuite créer l'index que l'inverse
|
|
|
00
|
|
|
#3 |
|
Nouveau Membre du Club
![]() Inscription : juillet 2005 Messages : 38 ![]() |
Carrement plus avantageux de créer l'index à la fin !
raisons :
|
|
|
00
|
|
|
#4 |
|
Membre régulier
![]() Inscription : avril 2003 Messages : 131 ![]() |
Merci beaucoup pour vos retours.
Je vais tester ça ^^ |
|
|
00
|
|
|
#5 |
|
Expert Confirmé
![]() Inscription : septembre 2004 Messages : 2 942 ![]() |
Attention : si la table est grosse, le calcul de l'index en one-shot à la fin va être long et très consommateur de temp.
Si vous le créé au début, l'insertion unitaire sera plus lente, certes, mais vous n'aurez pas 20h de calcul d'index ni besoin d'allouer 30 Go de TEMP... |
|
|
00
|
|
|
#6 |
|
Membre régulier
![]() Inscription : avril 2003 Messages : 131 ![]() |
Je "ré-ouvre le post" à la suite de ta remarque.
Mes index sont partitionnés. Je pense reconstruire par partition, ça me parait plus logique. J'ai pu aussi voir qu'il y avait l'option PARALLEL de disponible, qui semble-t-il permet d'augmenter le nombre de processus qui collecte les informations pour la construction de l'index. Certaines de mes tables sont relativement importantes (+300go) donc j'ai effectivement des problématiques de temps qui peuvent apparaître. Je recherche donc des optimisations permettant de gagner du temps ^^ J'ai vu qu'on pouvait jouer sur la taille de sort area size. Sur asktom j'ai pu récupérer l'info de 150% de la taille de l'index, mais dans mon cas ca peut faire beaucoup 150% ^^ |
|
|
00
|
|
|
#7 |
|
Expert Confirmé
![]() Inscription : septembre 2004 Messages : 2 942 ![]() |
les indexes sont-ils partitionnés ?
quelle est la taille maximale de l'index / partition d'index ? Donc, vu les volumétrie, je pense que calculer les indexes après insertions sera TRES difficile ! |
|
|
00
|
|
|
#8 | ||
|
Membre régulier
![]() Inscription : avril 2003 Messages : 131 ![]() |
Oui les index sont partitionnés.
Pour la taille je ne sais pas et je n'ai pas la possibilité de le savoir tout de suite ^^ Par contre (désolé mais je maîtrise vraiment pas les index) je ne comprends comment sont répartis les index via le partitionnement: Code :
Donc j'ai pleins de partition ... mais le stockage se fait sur quel critère ? Est ce que je n'aurais pas oublié quelque chose avec dbms_metadata ? |
||
|
|
00
|
|
|
#9 | |
|
Membre éprouvé
![]() Inscription : décembre 2007 Messages : 354 ![]() |
Citation:
Maintenant si le choix est entre charger massivement les données en présence de l'index ou charger massivement les données puis créer l'index alors le deuxième choix est meilleur ...
__________________
Consultant et formateur Oracle |
|
|
|
00
|
|
|
#10 | |
|
Expert Confirmé
![]() Inscription : septembre 2004 Messages : 2 942 ![]() |
Citation:
si on est serré niveau disque, l'option 1 s'impose |
|
|
|
00
|
|
|
#11 | |
|
Membre éprouvé
![]() Inscription : décembre 2007 Messages : 354 ![]() |
Citation:
__________________
Consultant et formateur Oracle |
|
|
|
00
|
|
|
#12 |
|
Expert Confirmé
![]() Inscription : septembre 2004 Messages : 2 942 ![]() |
c'est clair que si on est pressé mais qu'on a pas de disque ni de CPU ni de RAM, ça va être dur !
|
|
|
00
|
|
|
#13 |
|
Membre du Club
![]() Inscription : janvier 2008 Messages : 50 ![]() |
Si je puis me permettre, considère également l'option du NOLOGGING / LOGGING sur tes segments.
|
|
|
00
|
|
|
#14 |
|
Membre du Club
![]() Inscription : janvier 2008 Messages : 50 ![]() |
Ah et puis il existe l'option dans la commande de création d'index...
|
|
|
00
|
|
|
#15 |
|
Membre régulier
![]() Inscription : avril 2003 Messages : 131 ![]() |
J'ai pas forcement du temps ... mais j'ai une grosse machine ^^
Je vais parralléliser par partition quand c'est possible et je vais jeter un coup d'oeil sur ce que propose wondersonic. |
|
|
00
|
|
|
#16 |
|
Membre régulier
![]() Inscription : avril 2003 Messages : 131 ![]() |
Apparemment c'est automatique sous la 10g, faudra que je vérifie lorsque l'index sera créé et rebuild ...
Par contre est ce que quelqu'un pourrait m'expliquer l'impact qu'a le paramètre PARALLEL dans ALTER INDEX idx REBUILD PARALLEL 5, par exemple. J'ai pu lire que ça permettait d'avoir plusieurs processus qui s'occupe du calcul de l'index mais qu'une valeur était modifiée dans l'index (la colonne degree) et que cela avait ensuite, si j'ai bien compris, une incidence sur les requêtes effectuées. Mais je n'ai pas compris qu'elle était cet impact. On peu par la suite, avec un ALTER INDEX, repasser en defaut, mais là aussi, quel est l'impact ? |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com