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

📄 test-create

📁 开启mysql的远程连接的方法 mysql-noinstall-5.1.6-alpha-win32.zip
💻
字号:
#!/usr/bin/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## This test is for testing how long it takes to create tables,# make a count(*) from them and finally drop the tables. These# commands will be done in different ways in this test.# Using option --fast will drop all the tables in the end# of this test with one command instead of making own# 'drop' command for each and every table.# By changing the variable '$table_amount' value you can make# this test a lot harder/easier for your computer to drive.# Note that when using value bigger than 64 for this variable# will do 'drop table'-command	in totally different way because of that# how MySQL handles these commands.##################### Standard benchmark inits ##############################use Cwd;use DBI;use Benchmark;$opt_loop_count=10000; # Change this to make test harder/easier# This is the default value for the amount of tables used in this test.$pwd = cwd(); $pwd = "." if ($pwd eq '');require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n";$create_loop_count=$opt_loop_count;if ($opt_small_test){  $opt_loop_count/=100;  $create_loop_count/=1000;}$max_tables=min($limits->{'max_tables'},$opt_loop_count);if ($opt_small_test){  $max_tables=10;}print "Testing the speed of creating and dropping tables\n";print "Testing with $max_tables tables and $opt_loop_count loop count\n\n";########  Connect and start timeing####$dbh = $server->connect();### Test how the database can handle many tables### Create $max_tables ; Access all off them with a simple query### and then drop the tablesif ($opt_force) # If tables used in this test exist, drop 'em{  print "Okay..Let's make sure that our tables don't exist yet.\n\n";  for ($i=1 ; $i <= $max_tables ; $i++)  {    $dbh->do("drop table bench_$i" . $server->{'drop_attr'});  }}if ($opt_fast && defined($server->{vacuum})){  $server->vacuum(1,\$dbh);}print "Testing create of tables\n";$loop_time=$start_time=new Benchmark;for ($i=1 ; $i <= $max_tables ; $i++){  if (do_many($dbh,$server->create("bench_$i",				   ["i int NOT NULL",				    "d double",				    "f float",				    "s char(10)",				    "v varchar(100)"],				   ["primary key (i)"])))  {    # Got an error; Do cleanup    for ($i=1 ; $i <= $max_tables ; $i++)    {      $dbh->do("drop table bench_$i" . $server->{'drop_attr'});    }    die "Test aborted";  }}$end_time=new Benchmark;print "Time for create_MANY_tables ($max_tables): " .  timestr(timediff($end_time, $loop_time),"all") . "\n\n";if ($opt_fast && defined($server->{vacuum})){  $server->vacuum(1,\$dbh);}#### Here comes $max_tables couples of cont(*) to the tables.#### We'll check how long it will take...####print "Accessing tables\n";if ($limits->{'group_functions'}){  $query="select count(*) from ";  $type="select_group_when_MANY_tables";}else{  $query="select * from ";  $type="select_when_MANY_tables";}$loop_time=new Benchmark;for ($i=1 ; $i <= $max_tables ; $i++){  $sth = $dbh->do("$query bench_$i") or die $DBI::errstr;}$end_time=new Benchmark;print "Time to $type ($max_tables): " .    timestr(timediff($end_time, $loop_time),"all") . "\n\n";######## Now we are going to drop $max_tables tables;####print "Testing drop\n";$loop_time=new Benchmark;if ($opt_fast && $server->{'limits'}->{'multi_drop'} &&    $server->{'limits'}->{'query_size'} > 11+$max_tables*10){  my $query="drop table bench_1";  for ($i=2 ; $i <= $max_tables ; $i++)  {    $query.=",bench_$i";  }  $sth = $dbh->do($query . $server->{'drop_attr'}) or die $DBI::errstr;}else{  for ($i=1 ; $i <= $max_tables ; $i++)  {    $sth = $dbh->do("drop table bench_$i" . $server->{'drop_attr'})      or die $DBI::errstr;  }}$end_time=new Benchmark;print "Time for drop_table_when_MANY_tables ($max_tables): " .    timestr(timediff($end_time, $loop_time),"all") . "\n\n";if ($opt_fast && defined($server->{vacuum})){  $server->vacuum(1,\$dbh);}#### We'll do first one 'create table' and then we'll drop it#### away immediately. This loop shall be executed $opt_loop_count#### times.print "Testing create+drop\n";$loop_time=new Benchmark;for ($i=1 ; $i <= $create_loop_count ; $i++){  do_many($dbh,$server->create("bench_$i",			       ["i int NOT NULL",				"d double",				"f float",				"s char(10)",				"v varchar(100)"],			       ["primary key (i)"]));  $sth = $dbh->do("drop table bench_$i" . $server->{'drop_attr'}) or die $DBI::errstr;}$end_time=new Benchmark;print "Time for create+drop ($create_loop_count): " .    timestr(timediff($end_time, $loop_time),"all") . "\n";if ($opt_fast && defined($server->{vacuum})){  $server->vacuum(1,\$dbh);}## Same test, but with a table with many keys#my @fields=(); my @keys=();$keys=min($limits->{'max_index'},16);		# 16 is more than enough$seg= min($limits->{'max_index_parts'},$keys,16);	# 16 is more than enough# Make keys on the most important types@types=(0,0,0,1,0,0,0,1,1,1,1,1,1,1,1,1,1);	# A 1 for each char fieldpush(@fields,"field1 tinyint not null");push(@fields,"field2 mediumint not null");push(@fields,"field3 smallint not null");push(@fields,"field4 char(16) not null");push(@fields,"field5 integer not null");push(@fields,"field6 float not null");push(@fields,"field7 double not null");for ($i=8 ; $i <= $keys ; $i++){  push(@fields,"field$i char(5) not null");	# Should be relatively fair}# Let first key contain many segmentsmy $query="primary key (";for ($i= 1 ; $i <= $seg ; $i++){  $query.= "field$i,";}substr($query,-1)=")";push (@keys,$query);#Create other keysfor ($i=2 ; $i <= $keys ; $i++){  push(@keys,"index index$i (field$i)");}$loop_time=new Benchmark;for ($i=1 ; $i <= $opt_loop_count ; $i++){  do_many($dbh,$server->create("bench_$i", \@fields, \@index));  $dbh->do("drop table bench_$i" . $server->{'drop_attr'}) or die $DBI::errstr;}$end_time=new Benchmark;print "Time for create_key+drop ($opt_loop_count): " .    timestr(timediff($end_time, $loop_time),"all") . "\n";if ($opt_fast && defined($server->{vacuum})){  $server->vacuum(1,\$dbh);}######## End of benchmark####$dbh->disconnect;				# close connectionend_benchmark($start_time);

⌨️ 快捷键说明

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