Oracle parallèle de la performance de l'insert
J'ai un sql comme ceci:
Insert into A
Select * from B;
Maintenant, je veux que ça s'exécuter en parallèle. Ma question est de paralléliser l'insérez ou sélectionnez ou les deux? Voir la suite sql, pouvez-vous me dire laquelle est la bonne ou dont on a de meilleures performances. Je n'ai pas de dba autorisation, donc je cann pas vérifier son exécution le plan.
1) Insert /*+ parallel(A 6) */into A select * from B;
2) Insert into A select/*+ parallel(B 6) */* from B;
3) Insert /*+ parallel(A 6) */into A select /*+ parallel(B 6) */* from B;
Merci!
- En parallèle ne sera probablement pas vous aider dans cette situation de toute façon. IO va être le goulot d'étranglement qu'il y a peu de traitement nécessaire (à moins que vous n'en avez plus simplifié). Regardez
INSERT /*+APPEND*/ ....
si c'est une option - L'exécution parallèle peut améliorer de manière significative IO.
Vous devez vous connecter pour publier un commentaire.
Parallélisation à la fois la
INSERT
et laSELECT
est le plus rapide.(Si vous avez une assez grande quantité de données, vous disposez d'un serveur décent, tout est configuré sainement, etc.)
Vous aurez certainement envie de le tester vous-même, surtout pour trouver le meilleur degré de parallélisme. Il ya beaucoup de mythes entourant Oracle de l'exécution en parallèle, et même le manuel est parfois horriblement mal.
Sur 11gR2, je vous recommande d'exécuter votre déclaration comme ceci:
parallel(6)
utilise au niveau de l'instruction parallélisme, au lieu de l'objet au niveau de parallélisme. C'est un 11gR2 fonctionnalité qui vous permet d'exécuter facilement tout en parallèle sans avoir à vous inquiéter au sujet de l'objet des alias ou des méthodes d'accès. Pour 10G, vous devrez utiliser plusieurs conseils.append
soupçon n'est pas nécessaire. Si votre DML s'exécute en parallèle, il sera automatiquement direct-chemin des inserts. Toutefois, si votre déclaration obtient rétrogradé en série, par exemple si il n'y a aucun parallèle de serveurs disponibles, puis laappend
indice peut faire une grande différence.Vous n'avez pas besoin de privilèges DBA pour exécuter un plan d'expliquer. Je crois que SELECT_CATALOG est le privilège correct.