Ma compréhension du chemin conventionnel de SQL * Loader est qu'il génère simplement des instructions INSERT et les envoie à la base de données. Y a-t-il des avantages de performance à utiliser ceci plutôt que de simplement générer les instructions SQL par programme et de les exécuter par rapport à la base de données?Pourquoi utiliser les chemins de chargement conventionnels SQL * Loader?
Répondre
SQL * Loader génère des instructions INSERT, mais très critique, il utilise des variables de liaison. Si vous chargez des milliers de lignes, la création d'instructions INSERT incluant des littéraux de chaîne sera d'un ordre de grandeur plus lent que l'utilisation de variables de liaison en plus de l'écrasement du pool partagé. Si vous générez un tas d'instructions INSERT, Oracle doit analyser chaque instruction, ce qui consomme rapidement la grande majorité du temps de votre processus de chargement. Selon la taille de votre pool partagé, votre paramètre CURSOR_SHARING
et le nombre de lignes que vous chargez, un fichier d'instructions d'insertion peut très facilement mettre suffisamment de pression sur le pool partagé que le processus de chargement (et/ou tout autre processus non lié est en cours d'exécution en même temps que nécessaire pour analyser une nouvelle requête) va générer une erreur car il n'y a pas assez d'espace contigu dans le pool partagé.
Vous pouvez certainement écrire une application qui se comporte aussi bien que SQL * Loader pour un chargement de chemin conventionnel. Votre demande aurait besoin de faire quelque chose comme
Prepare the statement
Loop
Read the next row of data
Split the next row of data into columns
Bind the data to the bind variables in the prepared statement
Execute the prepared statement
End loop
C'est très différent de celui que des milliers déchaînant des requêtes INSERT distinctes contre la base de données.
- 1. 00626 erreur SQL Loader
- 2. Oracle SQL * Loader obtenant des valeurs CDATA
- 3. Qu'est-ce que Oracle SQL Loader?
- 4. Problème avec le fichier de contrôle Oracle Sql Loader
- 5. Comment gérer les sauts de ligne dans les données pour l'importation avec SQL Loader
- 6. Java TGA loader
- 7. Problème avec les événements Loader ActionScript
- 8. loader de classe de contexte
- 9. Afficher Ajax Loader pendant le rendu de la page
- 10. Loader SQL: Charger dans les 2 tableaux de 1 controlfile et 1 CSV
- 11. Comment échapper un caractère de boîtier dans un fichier de données SQL Loader?
- 12. Flash loader et glisser
- 13. Interagir avec SWF Loader
- 14. Exportation de chemins GIMP vers .svg question
- 15. Navigation Web via les chemins
- 16. Chemins dans les pages maîtres
- 17. Interception de tous les chemins relatifs
- 18. Distinction entre les chemins de contrôle d'exécution
- 19. Problème Webresource.axd entre les chemins de domaine normaux et sécurisés
- 20. L'utilitaire YUI Loader est-il fiable?
- 21. Expliquer les chemins relatifs - VWD vs IIS
- 22. Module Zend Forms Inclut des chemins
- 23. Comment faire ressortir les classes JPA de plusieurs chemins?
- 24. Pourquoi utiliser un service Web avec Linq to SQL?
- 25. Chemins de rupture d'itinéraire racine
- 26. Linq to Sql Chargement différé
- 27. De C++ MD2 Loader à C \ Objective-C & Cocoa
- 28. Obtenir les chemins des dossiers Vista
- 29. Comment MediaWiki compose-t-il les chemins de l'image?
- 30. Comment utiliser un middleware Rack uniquement pour certains chemins?
+1 Bonne réponse. –