⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 runtests.pl

📁 关系型数据库 Postgresql 6.5.2
💻 PL
字号:
#!/usr/local/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";}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -