diff options
Diffstat (limited to 'sql-bench/test-transactions.sh')
-rw-r--r-- | sql-bench/test-transactions.sh | 298 |
1 files changed, 0 insertions, 298 deletions
diff --git a/sql-bench/test-transactions.sh b/sql-bench/test-transactions.sh deleted file mode 100644 index 50d7098bca7..00000000000 --- a/sql-bench/test-transactions.sh +++ /dev/null @@ -1,298 +0,0 @@ -#!@PERL@ -# Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public -# License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. -# -# You should have received a copy of the GNU Library General Public -# License along with this library; if not, write to the Free -# Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, -# MA 02111-1307, USA -# -# Test of transactions performance. -# - -##################### Standard benchmark inits ############################## - -use Cwd; -use DBI; -use Benchmark; -#use warnings; - -$opt_groups=27; # Characters are 'A' -> Z - -$opt_loop_count=10000; # Change this to make test harder/easier -$opt_medium_loop_count=100; # Change this to make test harder/easier - -$pwd = cwd(); $pwd = "." if ($pwd eq ''); -require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n"; - -# Avoid warnings for variables in bench-init.pl -# (Only works with perl 5.6) -#our ($opt_small_test, $opt_small_tables, $opt_debug, $opt_force); - -if ($opt_small_test || $opt_small_tables) -{ - $opt_loop_count/=100; - $opt_medium_loop_count/=10; -} - - -if (!$server->{transactions} && !$opt_force) -{ - print "Test skipped because the database doesn't support transactions\n"; - exit(0); -} - -#### -#### Connect and start timeing -#### - -$start_time=new Benchmark; -$dbh = $server->connect(); - -### -### Create Table -### - -print "Creating tables\n"; -$dbh->do("drop table bench1"); -$dbh->do("drop table bench2"); - -do_many($dbh,$server->create("bench1", - ["idn int NOT NULL", - "rev_idn int NOT NULL", - "region char(1) NOT NULL", - "grp int NOT NULL", - "updated tinyint NOT NULL"], - ["primary key (idn)", - "unique (region,grp)"])); -do_many($dbh,$server->create("bench2", - ["idn int NOT NULL", - "rev_idn int NOT NULL", - "region char(1) NOT NULL", - "grp int NOT NULL", - "updated tinyint NOT NULL"], - ["primary key (idn)", - "unique (region,grp)"])); - -$dbh->{AutoCommit} = 0; - -### -### Test insert perfomance -### - -test_insert("bench1","insert_commit",0); -test_insert("bench2","insert_autocommit",1); - -sub test_insert -{ - my ($table, $test_name, $auto_commit)= @_; - my ($loop_time,$end_time,$id,$rev_id,$grp,$region); - - $dbh->{AutoCommit}= $auto_commit; - $loop_time=new Benchmark; - - for ($id=0,$rev_id=$opt_loop_count-1 ; $id < $opt_loop_count ; - $id++,$rev_id--) - { - $grp=$id/$opt_groups; - $region=chr(65+$id%$opt_groups); - do_query($dbh,"insert into $table values ($id,$rev_id,'$region',$grp,0)"); - } - - $dbh->commit if (!$auto_commit); - $end_time=new Benchmark; - print "Time for $test_name ($opt_loop_count): " . - timestr(timediff($end_time, $loop_time),"all") . "\n\n"; -} - -### -### Test rollback performance -### - -print "Test transactions rollback performance\n" if($opt_debug); - -## -## Insert rollback test -## - -# -# Test is done by inserting 100 rows in a table with lots of rows and -# then doing a rollback on these -# - -{ - my ($id,$rev_id,$grp,$region,$end,$loop_time,$end_time,$commit_loop,$count); - - $dbh->{AutoCommit} = 0; - $loop_time=new Benchmark; - $end=$opt_loop_count*2; - $count=0; - - for ($commit_loop=1, $id=$opt_loop_count ; $id < $end ; - $id++, $commit_loop++) - { - $rev_id=$end-$id; - $grp=$id/$opt_groups; - $region=chr(65+$id%$opt_groups); - do_query($dbh,"insert into bench1 values ($id,$rev_id,'$region',$grp,0)"); - if ($commit_loop >= $opt_medium_loop_count) - { - $dbh->rollback; - $commit_loop=0; - $count++; - } - } - if ($commit_loop > 1) - { - $dbh->rollback; - $count++; - } - $end_time=new Benchmark; - print "Time for insert_rollback ($count:$opt_loop_count): " . - timestr(timediff($end_time, $loop_time),"all") . "\n\n"; -} - -## -## Update rollback test -## - -# -# Test is done by updating 100 rows in a table with lots of rows and -# then doing a rollback on these -# - -{ - my ($id,$loop_time,$end_time,$commit_loop,$count); - - $dbh->{AutoCommit} = 0; - $loop_time=new Benchmark; - $end=$opt_loop_count*2; - $count=0; - - for ($commit_loop=1, $id=0 ; $id < $opt_loop_count ; $id++, $commit_loop++) - { - do_query($dbh,"update bench1 set updated=2 where idn=$id"); - if ($commit_loop >= $opt_medium_loop_count) - { - $dbh->rollback; - $commit_loop=0; - $count++; - } - } - if ($commit_loop > 1) - { - $dbh->rollback; - $count++; - } - $end_time=new Benchmark; - print "Time for update_rollback ($count:$opt_loop_count): " . - timestr(timediff($end_time, $loop_time),"all") . "\n\n"; -} - -## -## Delete rollback test -## - -# -# Test is done by deleting 100 rows in a table with lots of rows and -# then doing a rollback on these -# - -{ - my ($id,$loop_time,$end_time,$commit_loop,$count); - - $dbh->{AutoCommit} = 0; - $loop_time=new Benchmark; - $end=$opt_loop_count*2; - $count=0; - - for ($commit_loop=1, $id=0 ; $id < $opt_loop_count ; $id++, $commit_loop++) - { - do_query($dbh,"delete from bench1 where idn=$id"); - if ($commit_loop >= $opt_medium_loop_count) - { - $dbh->rollback; - $commit_loop=0; - $count++; - } - } - if ($commit_loop > 1) - { - $dbh->rollback; - $count++; - } - $end_time=new Benchmark; - print "Time for delete_rollback ($count:$opt_loop_count): " . - timestr(timediff($end_time, $loop_time),"all") . "\n\n"; -} - - -### -### Test update perfomance -### - -test_update("bench1","update_commit",0); -test_update("bench2","update_autocommit",1); - -sub test_update -{ - my ($table, $test_name, $auto_commit)= @_; - my ($loop_time,$end_time,$id); - - $dbh->{AutoCommit}= $auto_commit; - $loop_time=new Benchmark; - - for ($id=0 ; $id < $opt_loop_count ; $id++) - { - do_query($dbh,"update $table set updated=1 where idn=$id"); - } - - $dbh->commit if (!$auto_commit); - $end_time=new Benchmark; - print "Time for $test_name ($opt_loop_count): " . - timestr(timediff($end_time, $loop_time),"all") . "\n\n"; -} - -### -### Test delete perfomance -### - -test_delete("bench1","delete_commit",0); -test_delete("bench2","delete_autocommit",1); - -sub test_delete -{ - my ($table, $test_name, $auto_commit)= @_; - my ($loop_time,$end_time,$id); - - $dbh->{AutoCommit}= $auto_commit; - $loop_time=new Benchmark; - - for ($id=0 ; $id < $opt_loop_count ; $id++) - { - do_query($dbh,"delete from $table where idn=$id"); - } - $dbh->commit if (!$auto_commit); - $end_time=new Benchmark; - print "Time for $test_name ($opt_loop_count): " . - timestr(timediff($end_time, $loop_time),"all") . "\n\n"; -} - -#### -#### End of benchmark -#### - -$sth = $dbh->do("drop table bench1" . $server->{'drop_attr'}) or die $DBI::errstr; -$sth = $dbh->do("drop table bench2" . $server->{'drop_attr'}) or die $DBI::errstr; - -$dbh->disconnect; # close connection -end_benchmark($start_time); |