bulk insert de Java Oracle
J'ai besoin d'insérer de nombreuses petites lignes rapidement dans Oracle. (5 champs).
Avec MySQL, je me casse les insère dans des groupes de 100, puis utiliser un insert pour chaque groupe de 100 insère.
Mais avec Oracle, les commentaires des utilisateurs, c'est que la masse des inserts (n'importe où à partir de 1000-30000) sont trop lents.
Est-il une astuce similaire que je peux utiliser pour accélérer les programmes et les plaquettes de Java Oracle?
Construire SQLPlus scripts Java/etc pour appeler plutôt que de le faire via Java.
OriginalL'auteur Will Glass | 2010-04-26
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le Printemps DAO module de lot insérer le nombre de lignes.
Un exemple qui insère une collection d'objets de l'Ordre dans la base de données de mise à jour:
Un avantage de cette solution est qu'il envoie les données à la fin comme un gros paquet. Si vous êtes l'exécution de mises à jour pour chaque ligne, puis vous envoyer sur le réseau. JPA fournit également des commandes similaire solutions que cette solution de Printemps.
OriginalL'auteur Espen
Vous ne restez pas comment vous passez ces enregistrements à la base de données. Le meilleur moyen est d'utiliser un tableau, comme ceci permet l'utilisation de Oracle plein de chouettes TOUTES les opérations en bloc.
Cet exemple paquet contient deux procédures. Celui qui remplit une collection de T23 enregistrements (une table qui se compose de cinq colonnes numériques) et en vrac insère des enregistrements dans la table à l'aide d'un tableau.
Voici le résultat de quelques exemples de pistes:
Je pense que l'insertion de 100 000 enregistrements dans 0.15 secondes devraient plaire à tous, mais les plus exigeants des utilisateurs. Donc la question est, comment abordez-vous vos semelles?
OriginalL'auteur APC
Aujourd'hui, MySQL, Oracle, donc peut-être une solution plus simple pourrait être de rester sur MySQL...
Si non, alors vous devez vous assurer que la transaction est démarrée avant de commencer votre groupe de plaquettes, une fois que le groupe est terminé, puis valider la transaction et de démarrer une nouvelle transaction pour le prochain groupe d'inserts.
Également vérifier inutile index des définitions qui peuvent ralentir l'heure d'insertion.
Mis à jour...
En vrac insertion se réfère à la dernière étape de ETL (Extract Transform Load), donc, avez-vous envisagé d'utiliser une base java outil ETL comme pentaho bouilloire ou talend-studio.
Pentaho décrit leur Oracle de chargement en Vrac des installations ici.
Un rapide google montre également certaines données préliminaires de Talend qui a également un certain soutien pour Oracle de chargement en vrac.
Juste pour confirmer, il est déjà tout à l'intérieur d'une transaction unique.
Le commentaire au sujet de rester sur MySQL car c'est Oracle devait être pris comme une blague ... en quelque sorte-de ... là je vais encore une fois ...
Merci. Sans doute utile pour certains, mais je suis charger dynamiquement calculé de calcul de données générés sur la base d'une requête web. Doit être fait à partir de Java.
OriginalL'auteur crowne