Extremely poor execute performance



Running DBI 1.58 and DBD::Oracle 1.19 with Oracle 10g (10.2) on Fedora 7 64 bit OS:

Copying a table from one tablespace to another tablespace (two $dbh handles). The table has 56 fields. I've simplified the process to:

fetch row from first dbh
execute row to second dbh
commit every 100 rows

The table contains 1.9 million rows -- I copied 20,000 here and used DBI::Profile to get these results:

DBI::Profile: 130.809944s 93.63% (40001 calls) test_tie.pl @ 2007-09-14 15:18:40
'DESTROY' =>
'DBD::Oracle::st::DESTROY' =>
0.000075s
'err' =>
'DBD::Oracle::st::err' =>
0.026046s / 19999 = 0.000001s avg (first 0.000001s, min 0.000000s, max 0.000021s)
'DBD::_::common::err' =>
0.000010s
'execute' =>
'DBD::Oracle::st::execute' =>
130.783813s / 20000 = 0.006539s avg (first 0.004013s, min 0.000390s, max 29.996666s)

Basically, most executes finish in milliseconds, but randomly (different every run), the execute holds for 30 seconds, almost dead on. I can't figure out why, but the the delay when it halts (doesn't map up with the commits either) looks like some kind of timer.

I haven't noticed this problem on tables with fewer columns.

Any ideas?

Andy
.



Relevant Pages

  • Re: Extremely poor execute performance
    ... Copying a table from one tablespace to another tablespace (two $dbh handles). ... Basically, most executes finish in milliseconds, but randomly, the execute holds for 30 seconds, almost dead on. ... If you run apex you can often see the resmgr:wait quantum events with a time under the monitor->wait page. ...
    (perl.dbi.users)
  • Connecting to a non-localhost Mysql with Ruby-DBI
    ... I'm using DBI 0.0.23 on Slackware 10 and trying to connect to Mysql ... running on another server. ... dbh = DBI.connect( ...
    (comp.lang.ruby)
  • Re: How to call DBD::Oracles dbms_output_get from within a DBIx
    ... which is usually (from applications) called like this: ... As I'm in st::execute I have a $sth and can get hold of a $dbh. ... sub execute { ...
    (perl.dbi.users)