做爰高潮a片〈毛片〉,尤物av天堂一区二区在线观看,一本久久A久久精品VR综合,添女人荫蒂全部过程av

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

mysql測試小工具mybench試用

來源:懂視網 責編:小采 時間:2020-11-09 13:19:44
文檔

mysql測試小工具mybench試用

mysql測試小工具mybench試用:小型的mysql測試工具,主要有自帶的mysqlslap、super-smack和mybench。嗯,我這里的小型的意思是指工具安裝過程簡單。mysqlslap的使用方法遍地都是,就不先詳細寫了。根據(jù)個人偏好寫寫mybench吧,畢竟是perl的。安裝很簡單,如下: cpanm DBI D
推薦度:
導讀mysql測試小工具mybench試用:小型的mysql測試工具,主要有自帶的mysqlslap、super-smack和mybench。嗯,我這里的小型的意思是指工具安裝過程簡單。mysqlslap的使用方法遍地都是,就不先詳細寫了。根據(jù)個人偏好寫寫mybench吧,畢竟是perl的。安裝很簡單,如下: cpanm DBI D

小型的mysql測試工具,主要有自帶的mysqlslap、super-smack和mybench。嗯,我這里的小型的意思是指工具安裝過程簡單。mysqlslap的使用方法遍地都是,就不先詳細寫了。根據(jù)個人偏好寫寫mybench吧,畢竟是perl的。安裝很簡單,如下: cpanm DBI DBD::mysql Tim

小型的mysql測試工具,主要有自帶的mysqlslap、super-smack和mybench。嗯,我這里的小型的意思是指工具安裝過程簡單。 mysqlslap的使用方法遍地都是,就不先詳細寫了。根據(jù)個人偏好寫寫mybench吧,畢竟是perl的。 安裝很簡單,如下:

cpanm DBI DBD::mysql Time::HiRes
wget http://jeremy.zawodny.com/mysql/mybench/mybench-1.0.tar.gz
tar zxvf mybench-1.0.tar.gz
cd mybench-1.0
perl MakeFile.PL && make && make install

但是使用就不是太簡單了——mysqlslap會自己生成(-a選項)sql,super-smack則帶了一個gen-data程序生成數(shù)據(jù)然后自動導入,但是mybench沒有,所以只能自己搞定數(shù)據(jù)。 不過mybench還是自己生成了一個測試模版的腳本在/usr/bin/bench_example,很簡單的就知道怎么做了。 example如下:

#!/usr/bin/perl -w
eval 'exec /usr/bin/perl -w -S $0 ${1+"$@"}'
 if 0; # not running under some shell
use strict;
use MyBench;
use Getopt::Std;
use Time::HiRes qw(gettimeofday tv_interval);
use DBI;
my %opt;
Getopt::Std::getopt('n:r:h:', \%opt);
#這是我見過的最hardcode的perl腳本了(呃,除了我自己寫的垃圾),連db庫、用戶名、密碼都不給運行參數(shù)的
my $num_kids = $opt{n} || 10;
my $num_runs = $opt{r} || 100;
my $db = "test";
my $user = "test";
my $pass = "";
my $port = 3306;
my $host = $opt{h} || "192.168.0.1";
my $dsn = "DBI:mysql:$db:$host;port=$port";
my $callback = sub
{
 my $id = shift;
 my $dbh = DBI->connect($dsn, $user, $pass, { RaiseError => 1 });
#為測試準備的請求,測select就寫select,測insert就寫insert唄~
#如果不修改,也就是說測試用的是test.mytable表,而且必須有一個列叫id
 my $sth = $dbh->prepare("SELECT * FROM mytable WHERE ID = ?");
 my $cnt = 0;
 my @times = ();
 ## wait for the parent to HUP me
 local $SIG{HUP} = sub { };
 sleep 600;
#腳本定義的每個進程執(zhí)行多少次請求
 while ($cnt < $num_runs)
 {
 my $v = int(rand(100_000));
 ## time the query
 my $t0 = [gettimeofday];
#真正的執(zhí)行sql請求,通過上面的rand知道,之前準備的test.mytable的id列必須是int格式,同時不少于10w行(又一處hard)
 $sth->execute($v);
#通過前后兩次gettimeofday獲得sql的exec耗時
 my $t1 = tv_interval($t0, [gettimeofday]);
#完成一次請求執(zhí)行,加入數(shù)組
 push @times, $t1;
 $sth->finish();
 $cnt++;
 }
 ## cleanup
 $dbh->disconnect();
#計算本進程全部請求的各項數(shù)據(jù),幾個大小和均來自MyBench模塊
 my @r = ($id, scalar(@times), min(@times), max(@times), avg(@times), tot(@times));
 return @r;
};
#將上面這個函數(shù)交給MyBench模塊的fork_and_work執(zhí)行,即并發(fā)指定數(shù)量請求,返回總的結果
my @results = MyBench::fork_and_work($num_kids, $callback);
#計算總的數(shù)據(jù)
MyBench::compute_results('test', @results);
exit;
__END__

然后看看/usr/lib/perl5/site_perl/5.8.8/MyBench.pm,主要內容就是fork和compute:

package MyBench;
use strict;
$main::VERSION = '1.0';
use Exporter;
@MyBench::ISA = 'Exporter';
#導出求最大值、最小值、平均值、綜合值的函數(shù)給外面用
@MyBench::EXPORT = qw(max min avg tot);
sub fork_and_work($$)
{
#關閉
輸出緩沖 $|=1; use strict; use IO::Pipe; use IO::Select; $SIG{CHLD} = 'IGNORE'; ## let the kids die my $kids_to_fork = shift; my $callback = shift; my $num_kids = 0; my @pipes = (); my @pids = (); my $pid = undef; print "forking: "; while ($num_kids < $kids_to_fork) { #用IO::Pipe管道方式來傳遞父子進程的信息 my $pipe = new IO::Pipe; #fork進程開始 if ($pid = fork()) { ## parent $num_kids++; #每fork完成一個打印一個+號 print "+"; #從管道中讀取數(shù)據(jù) $pipe->reader(); push @pipes, $pipe; push @pids, $pid; } elsif (defined $pid) { ## child #打開管道寫入數(shù)據(jù)的功能 $pipe->writer(); #執(zhí)行select_example腳本傳入的mysql請求測試函數(shù) my @result = $callback->($num_kids); #把結果寫入管道 print $pipe "@result\n"; #關閉管道 $pipe->close(); exit 0; } else { print "fork failed: $!\n"; } } print "\n"; ## give them a bit of time to setup my $time = int($num_kids / 10) + 1; print "sleeping for $time seconds while kids get ready\n"; sleep $time; #發(fā)送SIGHUP信號給callback函數(shù) kill 1, @pids; ## collect the results my @results; print "waiting: "; #從管道中讀取數(shù)據(jù)到數(shù)組 for my $pipe (@pipes) { my $data = <$pipe>; push @results, $data; $pipe->close(); print "-"; } print "\n"; return @results; } sub compute_results(@) { my $name = shift; my $recs = 0; my ($Cnt, $Min, $Max, $Avg, $Tot, @Min, @Max); while (@_) { ## 6 elements per record my $rec = shift; chomp $rec; my ($id, $cnt, $min, $max, $avg, $tot) = split /\s+/, $rec; $Cnt += $cnt; $Avg += $avg; $Tot += $tot; push @Min, $min; push @Max, $max; $recs++; } $Avg = $Avg / $recs; $Min = min(@Min); $Max = max(@Max); my $Qps = $Cnt / ($Tot / $recs); print "$name: $Cnt $Min $Max $Avg $Tot $Qps\n"; print " clients : $recs\n"; print " queries : $Cnt\n"; print " fastest : $Min\n"; print " slowest : $Max\n"; print " average : $Avg\n"; print " serial : $Tot\n"; print " q/sec : $Qps\n"; } ## some numerical helper functions for arrays sub max { my $val = $_[0]; for (@_) { if ($_ > $val) { $val = $_; } } return $val; } sub min { my $val = $_[0]; for (@_) { if ($_ < $val) { $val = $_; } } return $val; } sub avg { my $tot; for (@_) { $tot += $_; } return $tot / @_; } sub tot { my $tot; for (@_) { $tot += $_; } return $tot; } 1;

好了,開始準備數(shù)據(jù),比較懶,直接用super-smack的gen-data先出了一些./gen-data -n 100000 -f %n,%80-12s%12n,%512-512s,%d > /root/data,然后進mysql里執(zhí)行:

USE test;
CREATE TABLE mytable (id INT(11) NOT NULL AUTO_INCREMENT, col1 CHAR(100), col2 CHAR(100), col3 INT(11), PRIMARY KEY (id) )ENGINE=InnoDB DEFAULT CHARSET=utf8;
LOAD DATA LOCAL INFILE 'data' REPLACE INTO TABLE 'mytable' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';
INSERT INTO mytable (col1,col2,col3) SELECT col1,col2,col3 FROM mytable;

最后執(zhí)行./select_bench -h 10.168.170.92 -n 10 -r 1000就能看到結果了: forking: ++++++++++ sleeping for 2 seconds while kids get ready waiting: ———- test: 10000 0.00017 0.006809 0.0010413514 10.413514 9602.9063772325 clients : 10 queries : 10000 fastest : 0.00017 slowest : 0.006809 average : 0.0010413514 serial : 10.413514 q/sec : 9602.9063772325

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

mysql測試小工具mybench試用

mysql測試小工具mybench試用:小型的mysql測試工具,主要有自帶的mysqlslap、super-smack和mybench。嗯,我這里的小型的意思是指工具安裝過程簡單。mysqlslap的使用方法遍地都是,就不先詳細寫了。根據(jù)個人偏好寫寫mybench吧,畢竟是perl的。安裝很簡單,如下: cpanm DBI D
推薦度:
標簽: 工具 測試 試用
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 富裕县| 平阳县| 闻喜县| 襄汾县| 岚皋县| 都昌县| 惠来县| 宝兴县| 汉中市| 达日县| 杨浦区| 潜山县| 都江堰市| 平罗县| 南投市| 玉龙| 河北区| 科技| 新竹市| 金华市| 漠河县| 林口县| 安龙县| 巫山县| 光山县| 仪征市| 泗洪县| 合川市| 浦县| 大田县| 兰州市| 佛冈县| 紫金县| 莆田市| 三台县| 桓台县| 交城县| 云龙县| 井冈山市| 改则县| 太康县|