Ok I increased the ora_array_chunk_size size as shown below (I hope its
correct)

# Connecting to database
my $dbh = DBI->connect("dbi:Oracle:$dbname", $uname, $passwd,{
      PrintError => 0,
      RaiseError => 0,
      ora_array_chunk_size => 1000000
  } ) or die "Could not connect to the database\n";

Also removed the section to drop and create table from all the 3 scripts.
Here are the new results with same set of records:

sqlldr conv    - 27 seconds
DBD::Oracle - 37 seconds
sqlldr direct  - 02 seconds

The bottom line is sqlldr if used in direct mode is incomparable but
DBD::Oracle is almost as efficient as sqlldr used in conventional mode

Cheers,
Parag



On Sun, May 2, 2010 at 5:27 PM, Jeffrey Seger <j...@jeffseger.com> wrote:

> I think you have to keep the time reading records and setting up the
> arrays in the comparison, as SQLLDR has to read and parse too.  I do
> agree that this could be sped up by changing the chunk size though.
>
> I'd also take out dropping and re-creating the table, or at the very
> least, time that operation separately.  If you are calling TRUNCATE in
> your SQLLDR script, then call TRUNCATE in your Perl script as well.
>
>
>
>
> On Sun, May 2, 2010 at 7:58 PM, John Scoles <sco...@pythian.com> wrote:
> > That seems about right a millon records in less than a min is very fast.
> >
> > This could be spead up a bit by setting 'ora_array_chunk_size' to a
> larger
> > value than the default 1000.
> >
> > If you can run it again with 10000 and 100000 or even 1000000 to see what
> we
> > get.
> >
> > I couldn't tell from your code but you are only testing the time it takes
> to
> > do the insert and not the time to set up the arrays??
> >
> > cheers
> > John SColes
> >
> > On Sun, May 2, 2010 at 7:44 PM, Parag Kalra <paragka...@gmail.com>
> wrote:
> >
> >> Ok here is the thing.
> >>
> >> This afternoon I coded few scripts and created a test setup to validate
> the
> >> benchmarking results of the various tools and following are the results:
> >>
> >> Environment Settings
> >> Operating System: Windoze XP SP3  (sorry couldn't test it Nix as it is a
> >> prod box)
> >> Database: Oracle 10g 10.2.0.1.0
> >> Perl: 5.10.1
> >> DBD-Oracle: 1.21
> >> Total records used for testing: 1048576
> >>
> >> Time of insertion taken by sqlldr in conventional mode -
>  35
> >> seconds
> >> Time of insertion taken by sqldr in direct mode -
> >> 06 seconds
> >> Time of insertion taken by DBD::Oracle using the array interface - 46
> >> seconds
> >>
> >> PFA the Perl script used for testing. Let me if any of you interested in
> >> viewing the sqlldr control scripts.
> >>
> >> Cheers,
> >> Parag
> >>
> >>
> >>
> >> On Sun, May 2, 2010 at 12:27 PM, Jeffrey Seger <j...@jeffseger.com>
> wrote:
> >>
> >>> My experience is that DBD::Oracle using the array interface is
> >>> comparable performance-wise to SQLLDR in conventional path mode.
> >>> However, SQLLDR can also be called in direct path mode, which is even
> >>> faster, but you should really know what you are doing before using
> >>> that.  It has implications beyond the performance aspect that you need
> >>> to be aware of.
> >>>
> >>> If you want/need/understand using direct path, then SQLLDR is the way
> >>> to go.  If you want better integration with the rest of your program
> >>> then DBD::Oracle is the way to go.
> >>>
> >>> On Sun, May 2, 2010 at 4:20 AM, Parag Kalra <paragka...@gmail.com>
> wrote:
> >>> > Hi All,
> >>> >
> >>> > I want to know which one of these algorithm would be the most
> optimized
> >>> > solution to insert large number of records and Why:
> >>> >
> >>> > 1. Preparing an Insert query once and executing it with place holders
> >>> for
> >>> > the entire set of records
> >>> > 2. Executing Oracle's sqlldr command and uploading the same set of
> >>> records
> >>> >
> >>> > Cheers,
> >>> > Parag
> >>> >
> >>>
> >>>
> >>>
> >>> --
> >>> "Champions do not become champions when they win the event, but in the
> >>> hours, weeks, months and years they spend preparing for it. The
> >>> victorious performance itself is merely the demonstration of their
> >>> championship character." -T. Alan Armstrong
> >>>
> >>> "The Ow that can be expressed is not the true Ow." - Ao Tzu
> >>>
> >>
> >>
> >
> > --
> > Miss MySQL Conference 2010?  No problem.
> > Access Pythian speaker session videos at http://bit.ly/mysql2010
> >
> >
>
>
>
> --
> "Champions do not become champions when they win the event, but in the
> hours, weeks, months and years they spend preparing for it. The
> victorious performance itself is merely the demonstration of their
> championship character." -T. Alan Armstrong
>
> "The Ow that can be expressed is not the true Ow." - Ao Tzu
>

Reply via email to