Commit 8ac356cd authored by Bruce Momjian's avatar Bruce Momjian

rm src/test/performance

Last changed in 1997.

Report by Andres Freund
parent 1c7087af
DBMS: PostgreSQL 6.2b10
OS: FreeBSD 2.1.5-RELEASE
HardWare: i586/90, 24M RAM, IDE
StartUp: postmaster -B 256 '-o -S 2048' -S
Compiler: gcc 2.6.3
Compiled: -O, without CASSERT checking, with
-DTBL_FREE_CMD_MEMORY (to free memory
if BEGIN/END after each query execution)
DB connection startup: 0.20
8192 INSERTs INTO SIMPLE (1 xact): 39.58
8192 INSERTs INTO SIMPLE (8192 xacts): 1190.98
Create INDEX on SIMPLE: 3.69
8192 INSERTs INTO SIMPLE with INDEX (1 xact): 46.65
8192 random INDEX scans on SIMPLE (1 xact): 65.49
ORDER BY SIMPLE: 2.27
#!/usr/bin/perl
#
# Accepts one argument - DBMS name (pgsql, ...) and initializes
# global variable $TestDBMS with this name.
#
# Where to run tests
$DBNAME = 'perftest';
# This describtion for all DBMS supported by test
# DBMS_name => [FrontEnd, DestroyDB command, CreateDB command]
%DBMS =
('pgsql' =>
[ "psql -q -d $DBNAME", "destroydb $DBNAME", "createdb $DBNAME" ]);
# Tests to run: test' script, test' description, ...
# Test' script is in form
#
# script_name[.ntm][ T]
#
# script_name is name of file in ./sqls
# .ntm means that script will be used for some initialization
# and should not be timed: runtests.pl opens /dev/null as STDERR
# in this case and restore STDERR to result file after script done.
# Script shouldn't notice either he is running for test or for
# initialization purposes.
# T means that all queries in this test (initialization ?) are to be
# executed in SINGLE transaction. In this case global variable $XACTBLOCK
# is not empty string. Otherwise, each query in test is to be executed
# in own transaction ($XACTBLOCK is empty string). In accordance with
# $XACTBLOCK, script is to do DBMS specific preparation before execution
# of queries. (Look at example in sqls/inssimple for MySQL - it gives
# an idea of what can be done for features unsupported by an DBMS.)
#
@perftests = (
# It speed up things
'connection.ntm', 'DB connection startup (no timing)',
# Just connection startup time (echo "" | psql ... - for PgSQL)
'connection', 'DB connection startup',
'crtsimple.ntm', 'Create SIMPLE table (no timing)',
# 8192 inserts in single xaction
'inssimple T', '8192 INSERTs INTO SIMPLE (1 xact)',
'drpsimple.ntm', 'Drop SIMPLE table (no timing)',
'crtsimple.ntm', 'Create SIMPLE table (no timing)',
# 8192 inserts in 8192 xactions
'inssimple', '8192 INSERTs INTO SIMPLE (8192 xacts)',
'vacuum.ntm', 'Vacuum (no timing)',
# Fast (after table filled with data) index creation test
'crtsimpleidx', 'Create INDEX on SIMPLE',
'drpsimple.ntm', 'Drop SIMPLE table (no timing)',
'crtsimple.ntm', 'Create SIMPLE table (no timing)',
'crtsimpleidx.ntm', 'Create INDEX on SIMPLE (no timing)',
# 8192 inserts in single xaction into table with index
'inssimple T', '8192 INSERTs INTO SIMPLE with INDEX (1 xact)',
# 8192 SELECT * FROM simple WHERE justint = <random_key> in single xaction
'slcsimple T', '8192 random INDEX scans on SIMPLE (1 xact)',
# SELECT * FROM simple ORDER BY justint
'orbsimple', 'ORDER BY SIMPLE',);
#
# It seems that nothing below need to be changed
#
$TestDBMS = $ARGV[0];
die "Unsupported DBMS $TestDBMS\n" if !exists $DBMS{$TestDBMS};
$FrontEnd = $DBMS{$TestDBMS}[0];
$DestroyDB = $DBMS{$TestDBMS}[1];
$CreateDB = $DBMS{$TestDBMS}[2];
print "(Re)create DataBase $DBNAME\n";
`$DestroyDB`; # Destroy DB
`$CreateDB`; # Create DB
$ResFile = "Results.$TestDBMS";
$TmpFile = "Tmp.$TestDBMS";
open(SAVEOUT, ">&STDOUT");
open(STDOUT, ">/dev/null") or die;
open(SAVEERR, ">&STDERR");
open(STDERR, ">$TmpFile") or die;
select(STDERR);
$| = 1;
for ($i = 0; $i <= $#perftests; $i++)
{
$test = $perftests[$i];
($test, $XACTBLOCK) = split(/ /, $test);
$runtest = $test;
if ($test =~ /\.ntm/)
{
#
# No timing for this queries
#
close(STDERR); # close $TmpFile
open(STDERR, ">/dev/null") or die;
$runtest =~ s/\.ntm//;
}
else
{
close(STDOUT);
open(STDOUT, ">&SAVEOUT");
print STDOUT "\nRunning: $perftests[$i+1] ...";
close(STDOUT);
open(STDOUT, ">/dev/null") or die;
select(STDERR);
$| = 1;
printf "$perftests[$i+1]: ";
}
do "sqls/$runtest";
# Restore STDERR to $TmpFile
if ($test =~ /\.ntm/)
{
close(STDERR);
open(STDERR, ">>$TmpFile") or die;
}
select(STDERR);
$| = 1;
$i++;
}
close(STDERR);
open(STDERR, ">&SAVEERR");
open(TMPF, "<$TmpFile") or die;
open(RESF, ">$ResFile") or die;
while (<TMPF>)
{
$str = $_;
($test, $rtime) = split(/:/, $str);
($tmp, $rtime, $rest) = split(/[ ]+/, $rtime);
print RESF "$test: $rtime\n";
}
if ( $TestDBMS =~ /^pgsql/ )
{
`echo "CREATE TABLE simple (justint int);" | time $FrontEnd`;
}
if ( $TestDBMS =~ /^pgsql/ )
{
`echo "CREATE INDEX simpleidx ON simple (justint);" | time $FrontEnd`;
}
if ( $TestDBMS =~ /^pgsql/ )
{
`echo "DROP TABLE simple;" | time $FrontEnd`;
}
# src/test/performance/sqls/inssimple
#
# Transactions are unsupported by MySQL - so for insertion of
# 8192 rows, 1 INSERT per Xaction, we returned "Transactions unsupported"
#
if ( $TestDBMS =~ /^mysql/ && $XACTBLOCK eq '' )
{
print STDERR " No_Xact\n";
return;
}
`> .sqlf`; # clean file
#
# PgSQL specific: if all queries from inssimple.data must be executed in
# single xaction ($XACTBLOCK ne '') then add BEGIN/END arround queries
#
`echo "BEGIN;" >> .sqlf` if ( $TestDBMS =~ /^pgsql/ && $XACTBLOCK ne '' );
`cat sqls/inssimple.data >> .sqlf`;
# PgSQL (see above)
`echo "END;" >> .sqlf` if ( $TestDBMS =~ /^pgsql/ && $XACTBLOCK ne '' );
# Ok - run queries
`time $FrontEnd < .sqlf`;
This source diff could not be displayed because it is too large. You can view the blob instead.
`echo "SELECT * FROM simple ORDER BY justint;" | time $FrontEnd`;
`> .sqlf`;
# PgSQL specific to execute all queries in single xaction
`echo "BEGIN;" >> .sqlf` if ( $TestDBMS =~ /^pgsql/ && $XACTBLOCK ne '' );
`cat sqls/slcsimple.data >> .sqlf`;
`echo "END;" >> .sqlf` if ( $TestDBMS =~ /^pgsql/ && $XACTBLOCK ne '' );
# Run queries
`time $FrontEnd < .sqlf`;
This source diff could not be displayed because it is too large. You can view the blob instead.
if ( $TestDBMS =~ /^pgsql/ )
{
`time $FrontEnd -c 'vacuum'`;
}
#!/bin/sh
# Please choose amount of sort memory (-S XXX) as appropriate
# for your system: more is better, but swapping breaks performance!
exec postmaster '-o -S 2048' -S
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment