From ea6c43ed19e10fc25909fe85e5320671095cfe10 Mon Sep 17 00:00:00 2001 From: tonnesen Date: Thu, 30 May 2002 19:55:18 +0000 Subject: [PATCH] New benchmark run to test Sergey's schema --- marc/benchmarks/benchmarkschema | 28 ++++++++++++++++++++-- marc/benchmarks/generaterandomdata | 37 +++++++++++++++++++----------- marc/benchmarks/getdata-paul | 2 +- marc/benchmarks/getdata-paul-regex | 2 +- marc/benchmarks/getdata-steve | 10 ++++---- marc/benchmarks/runbenchmark | 8 +++++-- 6 files changed, 63 insertions(+), 24 deletions(-) diff --git a/marc/benchmarks/benchmarkschema b/marc/benchmarks/benchmarkschema index 118e8d3a05..0b04dd8ead 100644 --- a/marc/benchmarks/benchmarkschema +++ b/marc/benchmarks/benchmarkschema @@ -4,9 +4,33 @@ CREATE TABLE marc_subfield_table ( tag char(3) NOT NULL default '', bibid bigint(20) NOT NULL default '0', subfieldorder tinyint(4) NOT NULL default '0', - subfieldmark char(1) NOT NULL default '', + subfieldcode char(1) NOT NULL default '', subfieldvalue varchar(255) default NULL, valuebloblink bigint(20) default NULL, PRIMARY KEY (subfieldid), - KEY (bibid,tagid,tag,subfieldmark), + KEY (bibid,tagid,tag,subfieldcode), + KEY (bibid,tag,subfieldcode,subfieldvalue) ) TYPE=MyISAM; + + +CREATE TABLE marc_field_table_sergey ( + fieldid bigint(20) unsigned NOT NULL auto_increment, + bibid bigint(20) NOT NULL default '0', + tagid bigint(20) NOT NULL default '0', + tag char(3) NOT NULL default '', + PRIMARY KEY (fieldid), + KEY (bibid), + KEY (tagid), + KEY (tag) +); + +CREATE TABLE marc_subfield_table_sergey ( + subfieldid bigint(20) unsigned NOT NULL auto_increment, + fieldid bigint(20), + subfieldorder tinyint(4) NOT NULL default '0', + subfieldcode char(1) NOT NULL default '', + subfieldvalue varchar(255) default NULL, + valuebloblink bigint(20) default NULL, + PRIMARY KEY (subfieldid), + KEY (fieldid) +); diff --git a/marc/benchmarks/generaterandomdata b/marc/benchmarks/generaterandomdata index 2c6455b3e1..2fdd086f0e 100644 --- a/marc/benchmarks/generaterandomdata +++ b/marc/benchmarks/generaterandomdata @@ -31,7 +31,6 @@ for ($bibid=1; $bibid<80000; $bibid++) { my $numsubfields=int(rand(10)+1); my $subfieldsused; my $localsubfieldcounter=0; - my $tagvalue=''; for ($j=1; $j<=$numsubfields; $j++) { my $code=''; until ($code) { @@ -44,8 +43,7 @@ for ($bibid=1; $bibid<80000; $bibid++) { $subfieldcounter++; $localsubfieldcounter++; my $word=$words[int(rand($#words))]; - $tagvalue.="\$$code $word\0"; - my $sth=$dbh->prepare("insert into marc_2XX_subfield_table (subfieldid, tagid, tag, bibid, subfieldorder, subfieldcode, subfieldvalue) values (?,?,?,?,?,?,?)"); + my $sth=$dbh->prepare("insert into marc_subfield_table (subfieldid, tagid, tag, bibid, subfieldorder, subfieldcode, subfieldvalue) values (?,?,?,?,?,?,?)"); my $error=1; while ($error) { $sth->execute($subfieldcounter, $tagcounter, $tag, $bibid, $localsubfieldcounter, $code, $word); @@ -56,18 +54,29 @@ for ($bibid=1; $bibid<80000; $bibid++) { } $sth->finish; } - } - $tagvalue=~s/\0$//; - my $error=1; - my $sth=$dbh->prepare("insert into marc_0XX_tag_table (bibcode, tagnumber, tagorder, tagvalue) values (?, ?, ?, ?)"); - while ($error) { - $sth->execute($bibid, $tag, $localtagcounter, $tagvalue); - $error=$dbh->err; - if ($error) { - sleep 1; - print "ERROR: $error\n"; + my $error=1; + my $sth=$dbh->prepare("insert into marc_field_table_sergey (bibid, tagid, tag) values (?, ?, ?)"); + while ($error) { + $sth->execute($bibid, $localtagcounter, $tag); + $error=$dbh->err; + if ($error) { + sleep 1; + print "ERROR: $error\n"; + } + $fieldid=$dbh->{'mysql_insertid'}; + $sth->finish; + } + $error=1; + $sth=$dbh->prepare("insert into marc_subfield_table_sergey (fieldid, subfieldorder, subfieldcode, subfieldvalue) values (?, ?, ?, ?)"); + while ($error) { + $sth->execute($fieldid, $localsubfieldcounter, $code, $word); + $error=$dbh->err; + if ($error) { + sleep 1; + print "ERROR: $error\n"; + } + $sth->finish; } - $sth->finish; } } } diff --git a/marc/benchmarks/getdata-paul b/marc/benchmarks/getdata-paul index 04849250a4..04e8597d95 100644 --- a/marc/benchmarks/getdata-paul +++ b/marc/benchmarks/getdata-paul @@ -7,7 +7,7 @@ use DBI; -my $dbh=DBI->connect("dbi:mysql:kohabenchmark", 'root', 'testpass'); +my $dbh=DBI->connect("dbi:mysql:kohabenchmark", 'youruserid', 'yourpassword'); my $count=$ARGV[0]; my $print=$ARGV[1]; diff --git a/marc/benchmarks/getdata-paul-regex b/marc/benchmarks/getdata-paul-regex index edd33a8dbf..f56a79a851 100644 --- a/marc/benchmarks/getdata-paul-regex +++ b/marc/benchmarks/getdata-paul-regex @@ -7,7 +7,7 @@ use DBI; -my $dbh=DBI->connect("dbi:mysql:kohabenchmark", 'root', 'testpass'); +my $dbh=DBI->connect("dbi:mysql:kohabenchmark", 'youruserid', 'yourpassword'); my $count=$ARGV[0]; my $print=$ARGV[1]; diff --git a/marc/benchmarks/getdata-steve b/marc/benchmarks/getdata-steve index 7bdc3acbe7..6fa1dc231a 100644 --- a/marc/benchmarks/getdata-steve +++ b/marc/benchmarks/getdata-steve @@ -7,18 +7,20 @@ use DBI; -my $dbh=DBI->connect("dbi:mysql:kohabenchmark", 'root', 'testpass'); +my $dbh=DBI->connect("dbi:mysql:kohabenchmark", 'youruserid', 'yourpassword'); my $count=$ARGV[0]; my $print=$ARGV[1]; -my $bibid=$ARGV[2]; +my $max=$ARGV[2]; +my $bibid=$ARGV[3]; +($max) || ($max=79998); for ($i=0; $i<$count; $i++) { - ($bibid) || ($bibid=int(rand(79998))+1); + ($bibid) || ($bibid=int(rand($max))+1); ($print) && (print "BIBID: $bibid\n"); - my $sth=$dbh->prepare("select tagid,tag,subfieldcode,subfieldvalue from marc_2XX_subfield_table where bibid=$bibid order by tagid,subfieldorder"); + my $sth=$dbh->prepare("select tagid,tag,subfieldcode,subfieldvalue from marc_subfield_table where bibid=$bibid order by tagid,subfieldorder"); $sth->execute; my $lasttag=''; while (my ($tagid,$tag,$subfieldcode,$subfieldvalue) = $sth->fetchrow) { diff --git a/marc/benchmarks/runbenchmark b/marc/benchmarks/runbenchmark index 566ab06e3b..4e37274c06 100644 --- a/marc/benchmarks/runbenchmark +++ b/marc/benchmarks/runbenchmark @@ -4,14 +4,18 @@ # This script will iterate through each benchmark 5 times, looking up 500 # random records each time. Results will be printed to STDOUT. -my @benchmarks=('getdata-steve', 'getdata-paul', 'getdata-paul-regex'); +my @benchmarks=('getdata-steve', 'getdata-sergey'); +my $numrecords=$ARGV[0]; +my $numindb=$ARGV[1]; +($numrecords) || ($numrecords=50); +($numindb) || ($numindb=79998); my $iterations=5; foreach (@benchmarks) { print "$_:\t"; for ($i=1; $i<=$iterations; $i++) { - my $timer=`/usr/bin/time -f "%E" perl $_ 500 2>&1`; + my $timer=`/usr/bin/time -f "%E" perl $_ $numrecords 0 $numindb 2>&1`; chomp $timer; print "$timer\t"; } -- 2.39.2