count=120 With AutoCommit OFF=0.339 With AutoComit ON time=1.266 #### use strict; use warnings; use DBI; use Time::HiRes; #with AutoCommit = off sub test_insert1{ my ($dbh,$cnt)=@_; my($sth,$v,$bgn,$end); $v="a" x 1000; $sth=$dbh->prepare("insert into test1 (item1) values(?);") or die DBI->errstr; $bgn=Time::HiRes::time(); for (1 .. $cnt){ $sth->execute($v); } $sth->finish; $dbh->commit; $end=Time::HiRes::time(); return($bgn,$end); } #with AutoCommit = on sub test_insert2{ my ($dbh,$cnt)=@_; my($sth,$v,$bgn,$end); $v="a" x 1000; $sth=$dbh->prepare("insert into test1 (item1) values(?);") or die DBI->errstr; $bgn=Time::HiRes::time(); for (1 .. $cnt){ $sth->execute($v); } $sth->finish; $end=Time::HiRes::time(); return($bgn,$end); }sub print_count{ my($dbh)=@_; my $sth; my $sql="select count(*) as cnt from test1"; $sth=$dbh->prepare($sql); $sth->execute; while(my $r = $sth->fetchrow_hashref){ print "$r->{cnt}\n"; } $sth->finish; } my($user,$password,$dsn,$dbh,$sth); my($bgn,$end); my $cnt=120; print "count=$cnt\n"; $user="tetsu"; $password=""; $dsn="dbi:Pg:dbname=test1;host=localhost"; #with AutoCommit OFF $dbh=DBI->connect($dsn, $user,$password,{AutoCommit=>0})or die DBI->errstr;; ($bgn,$end)=test_insert1($dbh,1000); printf("With AutoCommit OFF=%0.3f\n",($end - $bgn)); #print_count($dbh); $dbh->disconnect; #with AutoCommit ON $dbh=DBI->connect($dsn, $user,$password,{AutoCommit=>1})or die DBI->errstr;; ($bgn,$end)=test_insert2($dbh,1000); printf("With AutoComit ON time=%0.3f\n",($end - $bgn)); #print_count($dbh); $dbh->disconnect; #### With AutoCommit OFF=0.224 With AutoComit ON time=0.259