Salut,
j'ai fait un petit prog de bench direct path/bulk array...
Le code du prog est en pièce jointe...
Concrètement on bosse sur la table suivante :
create table test_directpath(val_int number, val_str varchar2(30));
Le programme initialise des tableaux de 2000 éléments (chaines de caractères pour les deux colonnes).
Pour chaque méthode, on fait 1000 insertions de ces tableaux, ce qui revient à insérer 2 fois 2 millions de lignes et donc au total 4 millions..
Le résultat est le suivant :
*******TEST 1 (MODE DIRECT PATH) *******************
2000000 row(s) loaded
*******TEST 2 (MODE BULK ARRAY) *******************
2000000 row(s) loaded
****************** RESULTS ***********************
TOTAL TIME DIRECT PATH : 06785 (set =00273, load=06509, commit=00003)
TOTAL TIME BULK ARRAY : 24136 (exec=24060, commit=00076)
******************** END ************************
Le mode direct path est beaucoup plus rapide (selon mon jeu de tests 4 à 20 fois plus rapide...). En fait plus le nombre de lignes est grand, plus l'écart se creuse...
Petite précision qui explique aussi les résultats de tes tests différents des miens. Le mode direct path est toujours plus rapide en terme de set+load que le temps d'une exécution en mode bulk.
Par contre la première itération d'insertion donne l'avantage au mode bulk... Mais le temps mis par le mode bulk est le même pour chaque itération (sans compter que le temps du commit et exponentiellement lié au nombre de lignes total) alors que le temps par itération du mode direct path diminue et que son temps de commit est constant, quelque que soit le nombre d'enregistrement.
Donc, le mode direct path est d'autant plus intéressant qu'il y a d'itération d'insertion, donc plus intéressant sur des gros volumes.
Partager