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)
+);
my $numsubfields=int(rand(10)+1);
my $subfieldsused;
my $localsubfieldcounter=0;
- my $tagvalue='';
for ($j=1; $j<=$numsubfields; $j++) {
my $code='';
until ($code) {
$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);
}
$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;
}
}
}
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];
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];
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) {
# 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";
}