Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Postgres FD Implementation
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Abuhujair Javed
Postgres FD Implementation
Commits
ba708ea3
Commit
ba708ea3
authored
Sep 09, 2001
by
Tatsuo Ishii
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add -U, -P, -C options. See README.pgbench for more details.
parent
d330f09a
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
211 additions
and
94 deletions
+211
-94
contrib/pgbench/README.pgbench
contrib/pgbench/README.pgbench
+18
-1
contrib/pgbench/README.pgbench_jis
contrib/pgbench/README.pgbench_jis
+76
-62
contrib/pgbench/pgbench.c
contrib/pgbench/pgbench.c
+117
-31
No files found.
contrib/pgbench/README.pgbench
View file @
ba708ea3
pgbench 1.
2 README 2000/1/15
Tatsuo Ishii (t-ishii@sra.co.jp)
pgbench 1.
3 README 2001/09/09
Tatsuo Ishii (t-ishii@sra.co.jp)
o What is pgbench?
o What is pgbench?
...
@@ -101,6 +101,15 @@ o options
...
@@ -101,6 +101,15 @@ o options
(10,000,000) tuples in the accounts table.
(10,000,000) tuples in the accounts table.
default is 1.
default is 1.
-U login
Specify db user's login name if it is different from
the Unix login name.
-P password
Specify the db password. CAUTION: using this option
might be a security hole since ps command will
show the password. Use this for TESTING PURPOSE ONLY.
-n
-n
No vacuuming and cleaning the history table prior the
No vacuuming and cleaning the history table prior the
test is performed.
test is performed.
...
@@ -113,6 +122,11 @@ o options
...
@@ -113,6 +122,11 @@ o options
-S
-S
Perform select only transactions instead of TPC-B.
Perform select only transactions instead of TPC-B.
-C
Establish connection for each transaction, rather than
doing it just once at begining of pgbench in the normal
mode. This is usefull to measure the connection overhead.
-d
-d
debug option.
debug option.
...
@@ -139,6 +153,9 @@ Basically it is same as BSD license. See pgbench.c for more details.
...
@@ -139,6 +153,9 @@ Basically it is same as BSD license. See pgbench.c for more details.
o History
o History
2001/09/09
* Add -U, -P, -C options
2000/1/15 pgbench-1.2 contributed to PostgreSQL
2000/1/15 pgbench-1.2 contributed to PostgreSQL
* Add -v option
* Add -v option
...
...
contrib/pgbench/README.pgbench_jis
View file @
ba708ea3
pgbench 1.
2 README 2000/1/15
Tatsuo Ishii (t-ishii@sra.co.jp)
pgbench 1.
3 README 2001/09/09
Tatsuo Ishii (t-ishii@sra.co.jp)
$B"#(Bpgbench $B$H$O!)(B
$B"#(Bpgbench $B$H$O!)(B
pgbench $B$O(B TPC-B$B$K;w$?%Y%s%A%^!<%/%F%9%H$r9T$J$&%W%m%0%i%`$G$9!
#
:#$N$H(B
pgbench $B$O(B TPC-B$B$K;w$?%Y%s%A%^!<%/%F%9%H$r9T$J$&%W%m%0%i%`$G$9!
%
:#$N$H(B
$B$3$m(B PostgreSQL $B@lMQ$G$9!
#
(B
$B$3$m(B PostgreSQL $B@lMQ$G$9!
%
(B
pgbench $B$O(B select/update/insert $B$r4^$`%H%i%s%6%/%7%g%s$r<B9T$7!
"
A4BN$N(B
pgbench $B$O(B select/update/insert $B$r4^$`%H%i%s%6%/%7%g%s$r<B9T$7!
$
A4BN$N(B
$B<B9T;~4V$H<B:]$K40N;$7$?%H%i%s%6%/%7%g%s$N?t$+$i(B 1 $BIC4V$K<B9T$G$-$?%H(B
$B<B9T;~4V$H<B:]$K40N;$7$?%H%i%s%6%/%7%g%s$N?t$+$i(B 1 $BIC4V$K<B9T$G$-$?%H(B
$B%i%s%6%/%7%g%s?t(B (tps) $B$rI=<($7$^$9!
#
=hM}$NBP>]$H$J$k%F!<%V%k$O%G%U%)(B
$B%i%s%6%/%7%g%s?t(B (tps) $B$rI=<($7$^$9!
%
=hM}$NBP>]$H$J$k%F!<%V%k$O%G%U%)(B
$B%k%H$G$O(B 10$BK|%?%W%k$N%G!<%?$r4^$_$^$9!
#
(B
$B%k%H$G$O(B 10$BK|%?%W%k$N%G!<%?$r4^$_$^$9!
%
(B
$B<B:]$NI=<($O0J2<$N$h$&$J46$8$G$9!
#
(B
$B<B:]$NI=<($O0J2<$N$h$&$J46$8$G$9!
%
(B
number of clients: 4
number of clients: 4
number of transactions per client: 100
number of transactions per client: 100
...
@@ -18,16 +18,16 @@ number of processed transactions: 400/400
...
@@ -18,16 +18,16 @@ number of processed transactions: 400/400
tps = 19.875015(including connections establishing)
tps = 19.875015(including connections establishing)
tps = 20.098827(excluding connections establishing)
tps = 20.098827(excluding connections establishing)
pgbench $B$O(B JDBCBench $B$H$$$&!
"
$b$H$b$H$O(B MySQL $BMQ$K=q$+$l$?(B JDBC $BMQ$N%Y(B
pgbench $B$O(B JDBCBench $B$H$$$&!
$
$b$H$b$H$O(B MySQL $BMQ$K=q$+$l$?(B JDBC $BMQ$N%Y(B
$B%s%A%^!<%/%W%m%0%i%`$r;29M$K:n@.$5$l$^$7$?!
#
(B
$B%s%A%^!<%/%W%m%0%i%`$r;29M$K:n@.$5$l$^$7$?!
%
(B
$B"#(Bpgbench $B$NFCD'(B
$B"#(Bpgbench $B$NFCD'(B
o C $B8@8l$H(B libpq $B$@$1$G=q$+$l$F$$$k$N$G0\?"@-$,9b$/!
"
4JC1$K%$%s%9%H!<(B
o C $B8@8l$H(B libpq $B$@$1$G=q$+$l$F$$$k$N$G0\?"@-$,9b$/!
$
4JC1$K%$%s%9%H!<(B
$B%k$G$-$^$9!
#
(B
$B%k$G$-$^$9!
%
(B
o pgbench $B$O(B libpq $B$NHsF14|=hM}5!G=$r;H$C$F%^%k%A%f!<%64D6-$r%7%_%e%l!<(B
o pgbench $B$O(B libpq $B$NHsF14|=hM}5!G=$r;H$C$F%^%k%A%f!<%64D6-$r%7%_%e%l!<(B
$B%H$7$^$9!
#MF0W$KF1;~@\B34D6-$r%F%9%H$G$-$^$9!#
(B
$B%H$7$^$9!
%MF0W$KF1;~@\B34D6-$r%F%9%H$G$-$^$9!%
(B
$B"#(Bpgbench $B$N%$%s%9%H!<%k(B
$B"#(Bpgbench $B$N%$%s%9%H!<%k(B
...
@@ -46,61 +46,72 @@ o pgbench $B$O(B libpq $B$NHsF14|=hM}5!G=$r;H$C$F%^%k%A%f!<%64D6-$r%7%_%e%l!<
...
@@ -46,61 +46,72 @@ o pgbench $B$O(B libpq $B$NHsF14|=hM}5!G=$r;H$C$F%^%k%A%f!<%64D6-$r%7%_%e%l!<
$ pgbench [$B%G!<%?%Y!<%9L>(B]
$ pgbench [$B%G!<%?%Y!<%9L>(B]
$B$G$9!
#%G!<%?%Y!<%9L>$r>JN,$9$k$H!"
%f!<%6L>$HF1$8%G!<%?%Y!<%9$r;XDj$7$?(B
$B$G$9!
%%G!<%?%Y!<%9L>$r>JN,$9$k$H!$
%f!<%6L>$HF1$8%G!<%?%Y!<%9$r;XDj$7$?(B
$B$b$N$H$_$J$7$^$9!
#
%G!<%?%Y!<%9$O8e=R$N(B -i $B%*%W%7%g%s$r;H$C$F$"$i$+$8$a(B
$B$b$N$H$_$J$7$^$9!
%
%G!<%?%Y!<%9$O8e=R$N(B -i $B%*%W%7%g%s$r;H$C$F$"$i$+$8$a(B
$B=i4|2=$7$F$*$/I,MW$,$"$j$^$9!
#
(B
$B=i4|2=$7$F$*$/I,MW$,$"$j$^$9!
%
(B
pgbench $B$K$O$$$m$$$m$J%*%W%7%g%s$,$"$j$^$9!
#
(B
pgbench $B$K$O$$$m$$$m$J%*%W%7%g%s$,$"$j$^$9!
%
(B
-h $B%[%9%HL>(B PostgreSQL$B$N%G!<%?%Y!<%9%G!<%b%s(B postmaster $B$NF0(B
-h $B%[%9%HL>(B PostgreSQL$B$N%G!<%?%Y!<%9%G!<%b%s(B postmaster $B$NF0(B
$B$$$F$$$k%[%9%HL>$r;XDj$7$^$9!
#
>JN,$9$k$H<+%[%9%H$K(B Unix domain
$B$$$F$$$k%[%9%HL>$r;XDj$7$^$9!
%
>JN,$9$k$H<+%[%9%H$K(B Unix domain
socket $B$G@\B3$7$^$9!
#
(B
socket $B$G@\B3$7$^$9!
%
(B
-p $B%]!<%HHV9f(B postmaster $B$N;HMQ$9$k%]!<%HHV9f$r;XDj$7$^$9!
#
>JN,$9$k$H(B 5432
-p $B%]!<%HHV9f(B postmaster $B$N;HMQ$9$k%]!<%HHV9f$r;XDj$7$^$9!
%
>JN,$9$k$H(B 5432
$B$,;XDj$5$l$?$b$N$H$_$J$7$^$9!
#
(B
$B$,;XDj$5$l$?$b$N$H$_$J$7$^$9!
%
(B
-c $B%/%i%$%"%s%H?t(B $BF1;~<B9T%/%i%$%"%s%H?t$r;XDj$7$^$9!
#
>JN,;~$O(B
-c $B%/%i%$%"%s%H?t(B $BF1;~<B9T%/%i%$%"%s%H?t$r;XDj$7$^$9!
%
>JN,;~$O(B
1 $B$H$J$j$^$9!
#
(Bpgbench $B$OF1;~<B9T%/%i%$%"%s%HKh$K(B
1 $B$H$J$j$^$9!
%
(Bpgbench $B$OF1;~<B9T%/%i%$%"%s%HKh$K(B
$B%U%!%$%k%G%#%9%/%j%W%?$r;HMQ$9$k$N$G!
"
;HMQ2DG=(B
$B%U%!%$%k%G%#%9%/%j%W%?$r;HMQ$9$k$N$G!
$
;HMQ2DG=(B
$B%U%!%$%k%G%#%9%/%j%W%??t$r1[$($k%/%i%$%"%s%H?t$O(B
$B%U%!%$%k%G%#%9%/%j%W%??t$r1[$($k%/%i%$%"%s%H?t$O(B
$B;XDj$G$-$^$;$s!
#
;HMQ2DG=%U%!%$%k%G%#%9%/%j%W%??t(B
$B;XDj$G$-$^$;$s!
%
;HMQ2DG=%U%!%$%k%G%#%9%/%j%W%??t(B
$B$O(B limit $B$d(B ulimit $B%3%^%s%I$GCN$k$3$H$,$G$-$^$9!
#
(B
$B$O(B limit $B$d(B ulimit $B%3%^%s%I$GCN$k$3$H$,$G$-$^$9!
%
(B
-t $B%H%i%s%6%/%7%g%s?t(B $B3F%/%i%$%"%s%H$,<B9T$9$k%H%i%s%6%/%7%g%s?t$r(B
-t $B%H%i%s%6%/%7%g%s?t(B $B3F%/%i%$%"%s%H$,<B9T$9$k%H%i%s%6%/%7%g%s?t$r(B
$B;XDj$7$^$9!
#>JN,;~$O(B 10 $B$H$J$j$^$9!#
(B
$B;XDj$7$^$9!
%>JN,;~$O(B 10 $B$H$J$j$^$9!%
(B
-s $B%9%1!<%j%s%0%U%!%/%?!<(B
-s $B%9%1!<%j%s%0%U%!%/%?!<(B
-i $B%*%W%7%g%s$H0l=o$K;HMQ$7$^$9!
#
(B
-i $B%*%W%7%g%s$H0l=o$K;HMQ$7$^$9!
%
(B
$B%9%1!<%j%s%0%U%!%/%?!<$O(B1$B0J>e$N@0?t!
#
%9%1!<%j%s%0%U%!(B
$B%9%1!<%j%s%0%U%!%/%?!<$O(B1$B0J>e$N@0?t!
%
%9%1!<%j%s%0%U%!(B
$B%/%?!<$rJQ$($k$3$H$K$h$j!
"
%F%9%H$NBP>]$H$J$k%F!<%V%k$N(B
$B%/%?!<$rJQ$($k$3$H$K$h$j!
$
%F%9%H$NBP>]$H$J$k%F!<%V%k$N(B
$BBg$-$5$,(B 10$BK|(B x [$B%9%1!<%j%s%0%U%!%/%?!<(B]$B$K$J$j$^$9!
#
(B
$BBg$-$5$,(B 10$BK|(B x [$B%9%1!<%j%s%0%U%!%/%?!<(B]$B$K$J$j$^$9!
%
(B
$B%G%U%)%k%H$N%9%1!<%j%s%0%U%!%/%?!<$O(B 1 $B$G$9!
#
(B
$B%G%U%)%k%H$N%9%1!<%j%s%0%U%!%/%?!<$O(B 1 $B$G$9!
%
(B
-v $B$3$N%*%W%7%g%s$r;XDj$9$k$H!"%Y%s%A%^!<%/3+;OA0$K(B vacuum $B$H(B
-U login DB$B%f!<%6$N%m%0%$%sL>$r;XDj$7$^$9!%(B
history $B$N%/%j%"$r9T$J$$$^$9!#(B-v $B$H(B -n $B$r>JN,$9$k$H!"(B
$B:G>.8B$N(B vacuum $B$J$I$r9T$$$^$9!#$9$J$o$A!"(Bhistory $B$N:o=|!"(B
$B$H(B history, branches, history $B$N(B vacuum $B$r9T$$$^$9!#(B
$B$3$l$O!"(Bvacuum $B$N;~4V$r:G>.8B$K$7$J$,$i!"%Q%U%)!<%^%s%9$K(B
$B1F6A$9$k%4%_A]=|$r8z2LE*$K9T$$$^$9!#DL>o$O(B -v $B$H(B -n $B$r(B
$B>JN,$9$k$3$H$r$*$9$9$a$7$^$9!#(B
-n $B$3$N%*%W%7%g%s$r;XDj$9$k$H!"%Y%s%A%^!<%/3+;OA0$K(B vacuum $B$H(B
-P password $B%Q%9%o!<%I$r;XDj$7$^$9!%$J$*!$$3$N%*%W%7%g%s$r;H$&$H!$(B
history $B$N%/%j%"$r9T$J$$$^$;$s!#(B
$B%Q%9%o!<%I$r(Bps$B%3%^%s%I$G8+$i$l$k$J$I!$%;%-%e%j%F%#%[!<(B
$B%k$K$J$k2DG=@-$,$"$k$N$G!$%F%9%HMQ$K$N$_$*;H$$2<$5$$!%(B
-
S TPC-B$B$N%H%i%s%6%/%7%g%s$G$O$J$/!"8!:w$N$_$N%H%i%s%6%/%7%g%s$r
(B
-
n $B$3$N%*%W%7%g%s$r;XDj$9$k$H!$%Y%s%A%^!<%/3+;OA0$K(B vacuum $B$H
(B
$B<B9T$7$^$9!#8!:w%9%T!<%I$rB,Dj$7$?$$$H$-$K;H$$$^$9!#
(B
history $B$N%/%j%"$r9T$J$$$^$;$s!%
(B
-d $B%G%P%C%0%*%W%7%g%s!#MM!9$J>pJs$,I=<($5$l$^$9!#(B
-v $B$3$N%*%W%7%g%s$r;XDj$9$k$H!$%Y%s%A%^!<%/3+;OA0$K(B vacuum $B$H(B
history $B$N%/%j%"$r9T$J$$$^$9!%(B-v $B$H(B -n $B$r>JN,$9$k$H!$(B
$B:G>.8B$N(B vacuum $B$J$I$r9T$$$^$9!%$9$J$o$A!$(Bhistory $B$N:o=|!$(B
$B$H(B history, branches, history $B$N(B vacuum $B$r9T$$$^$9!%(B
$B$3$l$O!$(Bvacuum $B$N;~4V$r:G>.8B$K$7$J$,$i!$%Q%U%)!<%^%s%9$K(B
$B1F6A$9$k%4%_A]=|$r8z2LE*$K9T$$$^$9!%DL>o$O(B -v $B$H(B -n $B$r(B
$B>JN,$9$k$3$H$r$*$9$9$a$7$^$9!%(B
-S TPC-B$B$N%H%i%s%6%/%7%g%s$G$O$J$/!$8!:w$N$_$N%H%i%s%6%/%7%g%s$r(B
$B<B9T$7$^$9!%8!:w%9%T!<%I$rB,Dj$7$?$$$H$-$K;H$$$^$9!%(B
-C $B$3$N%*%W%7%g%s$r;XDj$9$k$H!$:G=i$K3NN)$7$?%3%M%/%7%g%s(B
$B$r;H$$2s$9$N$G$O$J$/!$3F%H%i%s%6%/%7%g%s$4$H$K(BDB$B$X$N@\(B
$BB3$r9T$$$^$9!%%3%M%/%7%g%s$N%*!<%P!<$X%C%I$rB,Dj$9$k$N(B
$B$KM-8z$G$9!%(B
-d $B%G%P%C%0%*%W%7%g%s!%MM!9$J>pJs$,I=<($5$l$^$9!%(B
$B"#%G!<%?%Y!<%9$N=i4|2=(B
$B"#%G!<%?%Y!<%9$N=i4|2=(B
pgbench $B$G%Y%s%A%^!<%/%F%9%H$r<B;\$9$k$?$a$K$O!
"
$"$i$+$8$a%G!<%?%Y!<%9(B
pgbench $B$G%Y%s%A%^!<%/%F%9%H$r<B;\$9$k$?$a$K$O!
$
$"$i$+$8$a%G!<%?%Y!<%9(B
$B$r=i4|2=$7!
"%F%9%H%G!<%?$r:n$kI,MW$,$"$j$^$9!#
(B
$B$r=i4|2=$7!
$%F%9%H%G!<%?$r:n$kI,MW$,$"$j$^$9!%
(B
$ pgbench -i [$B%G!<%?%Y!<%9L>(B]
$ pgbench -i [$B%G!<%?%Y!<%9L>(B]
$B$3$l$K$h$j0J2<$N%F!<%V%k$,:n$i$l$^$9(B($B%9%1!<%j%s%0%U%!%/%?!<(B == 1 $B$N>l9g(B)$B!
#
(B
$B$3$l$K$h$j0J2<$N%F!<%V%k$,:n$i$l$^$9(B($B%9%1!<%j%s%0%U%!%/%?!<(B == 1 $B$N>l9g(B)$B!
%
(B
$B!vCm0U!v(B
$B!vCm0U!v(B
$BF1$8L>A0$N%F!<%V%k$,$"$k$H:o=|$5$l$F$7$^$&$N$G$4Cm0U2<$5$$!*!*(B
$BF1$8L>A0$N%F!<%V%k$,$"$k$H:o=|$5$l$F$7$^$&$N$G$4Cm0U2<$5$$!*!*(B
...
@@ -112,9 +123,9 @@ tellers 10
...
@@ -112,9 +123,9 @@ tellers 10
accounts 100000
accounts 100000
history 0
history 0
$B%9%1!<%j%s%0%U%!%/%?!<$r(B 10,100,1000 $B$J$I$KJQ99$9$k$H!
"
>e5-%?%W%k?t$O(B
$B%9%1!<%j%s%0%U%!%/%?!<$r(B 10,100,1000 $B$J$I$KJQ99$9$k$H!
$
>e5-%?%W%k?t$O(B
$B$=$l$K1~$8$F(B10$BG\!
"(B100$BG\!"(B1000$BG\$K$J$j$^$9!#$?$H$($P!"
%9%1!<%j%s%0%U%!(B
$B$=$l$K1~$8$F(B10$BG\!
$(B100$BG\!$(B1000$BG\$K$J$j$^$9!%$?$H$($P!$
%9%1!<%j%s%0%U%!(B
$B%/%?!<$r(B 10 $B$H$9$k$H!
"
(B
$B%/%?!<$r(B 10 $B$H$9$k$H!
$
(B
$B%F!<%V%kL>(B $B%?%W%k?t(B
$B%F!<%V%kL>(B $B%?%W%k?t(B
-------------------------
-------------------------
...
@@ -123,28 +134,28 @@ tellers 100
...
@@ -123,28 +134,28 @@ tellers 100
accounts 1000000
accounts 1000000
history 0
history 0
$B$K$J$j$^$9!
#
(B
$B$K$J$j$^$9!
%
(B
$B"#!V%H%i%s%6%/%7%g%s!W$NDj5A(B
$B"#!V%H%i%s%6%/%7%g%s!W$NDj5A(B
pgbench $B$G$O!
"
0J2<$N%7!<%1%s%9$rA4It40N;$7$F(B1$B%H%i%s%6%/%7%g%s$H?t$($F(B
pgbench $B$G$O!
$
0J2<$N%7!<%1%s%9$rA4It40N;$7$F(B1$B%H%i%s%6%/%7%g%s$H?t$($F(B
$B$$$^$9!
#
(B
$B$$$^$9!
%
(B
(1) begin;
(1) begin;
(2) update accounts set abalance = abalance + :delta where aid = :aid;
(2) update accounts set abalance = abalance + :delta where aid = :aid;
$B$3$3$G!
"(B:delta$B$O(B1$B$+$i(B1000$B$^$G$NCM$r<h$kMp?t!"
(B:aid $B$O(B 1$B$+$i(B100000$B$^$G(B
$B$3$3$G!
$(B:delta$B$O(B1$B$+$i(B1000$B$^$G$NCM$r<h$kMp?t!$
(B:aid $B$O(B 1$B$+$i(B100000$B$^$G(B
$B$NCM$r<h$kMp?t$G$9!
#0J2<!"
Mp?t$NCM$O$=$l$>$l$3$N%H%i%s%6%/%7%g%s$N(B
$B$NCM$r<h$kMp?t$G$9!
%0J2<!$
Mp?t$NCM$O$=$l$>$l$3$N%H%i%s%6%/%7%g%s$N(B
$BCf$G$OF1$8CM$r;H$$$^$9!
#
(B
$BCf$G$OF1$8CM$r;H$$$^$9!
%
(B
(3) select abalance from accounts where aid = :aid;
(3) select abalance from accounts where aid = :aid;
$B$3$3$G$O(B1$B7o$@$18!:w$5$l$^$9!
#
(B
$B$3$3$G$O(B1$B7o$@$18!:w$5$l$^$9!
%
(B
(4) update tellers set tbalance = tbalance + :delta where tid = :tid;
(4) update tellers set tbalance = tbalance + :delta where tid = :tid;
$B$3$3$G(B :tid $B$O(B 1$B$+$i(B10$B$N4V$NCM$r$H$kMp?t$G$9!
#
(B
$B$3$3$G(B :tid $B$O(B 1$B$+$i(B10$B$N4V$NCM$r$H$kMp?t$G$9!
%
(B
(5) update branches set bbalance = bbalance + :delta where bid = :bid;
(5) update branches set bbalance = bbalance + :delta where bid = :bid;
$B$3$3$G(B :bid $B$O(B 1 $B$+$i(B[$B%9%1%j%s%0%U%!%/%?!<(B]$B$N4V$NCM$r<h$kMp?t$G$9!
#
(B
$B$3$3$G(B :bid $B$O(B 1 $B$+$i(B[$B%9%1%j%s%0%U%!%/%?!<(B]$B$N4V$NCM$r<h$kMp?t$G$9!
%
(B
(6) insert into history(tid,bid,aid,delta) values(:tid,:bid,:aid,:delta);
(6) insert into history(tid,bid,aid,delta) values(:tid,:bid,:aid,:delta);
...
@@ -152,13 +163,16 @@ pgbench $B$G$O!"0J2<$N%7!<%1%s%9$rA4It40N;$7$F(B1$B%H%i%s%6%/%7%g%s$H?t$($F(
...
@@ -152,13 +163,16 @@ pgbench $B$G$O!"0J2<$N%7!<%1%s%9$rA4It40N;$7$F(B1$B%H%i%s%6%/%7%g%s$H?t$($F(
$B"#:n<T$H%i%$%;%s%9>r7o(B
$B"#:n<T$H%i%$%;%s%9>r7o(B
pgbench $B$O@P0f(B $BC#IW$K$h$C$F=q$+$l$^$7$?!
#
%i%$%;%s%9>r7o$O(B pgbench.c $B$N(B
pgbench $B$O@P0f(B $BC#IW$K$h$C$F=q$+$l$^$7$?!
%
%i%$%;%s%9>r7o$O(B pgbench.c $B$N(B
$BKAF,$K=q$$$F$"$j$^$9!
#$3$N>r7o$r<i$k8B$jL5=~$GMxMQ$7!"
$^$?<+M3$K:FG[IU(B
$BKAF,$K=q$$$F$"$j$^$9!
%$3$N>r7o$r<i$k8B$jL5=~$GMxMQ$7!$
$^$?<+M3$K:FG[IU(B
$B$G$-$^$9!
#
(B
$B$G$-$^$9!
%
(B
$B"#2~DjMzNr(B
$B"#2~DjMzNr(B
2000/1/15 pgbench-1.2 $B$O(B PostgreSQL $B$K(B contribute $B$5$l$^$7$?!#(B
2001/09/09
* PostgreSQL 7.2$BMQ$K!$(B-U, -P, -C $B%*%W%7%g%s$rDI2C$7$^$7$?!%(B
2000/1/15 pgbench-1.2 $B$O(B PostgreSQL $B$K(B contribute $B$5$l$^$7$?!%(B
* -v $B%*%W%7%g%sDI2C(B
* -v $B%*%W%7%g%sDI2C(B
1999/09/29 pgbench-1.1 $B%j%j!<%9(B
1999/09/29 pgbench-1.1 $B%j%j!<%9(B
...
...
contrib/pgbench/pgbench.c
View file @
ba708ea3
/*
/*
* $Header: /cvsroot/pgsql/contrib/pgbench/pgbench.c,v 1.
9 2001/08/01 01:08:17
ishii Exp $
* $Header: /cvsroot/pgsql/contrib/pgbench/pgbench.c,v 1.
10 2001/09/09 03:15:56
ishii Exp $
*
*
* pgbench: a simple TPC-B like benchmark program for PostgreSQL
* pgbench: a simple TPC-B like benchmark program for PostgreSQL
* written by Tatsuo Ishii
* written by Tatsuo Ishii
...
@@ -67,6 +67,16 @@ int tps = 1;
...
@@ -67,6 +67,16 @@ int tps = 1;
int
remains
;
/* number of remained clients */
int
remains
;
/* number of remained clients */
int
is_connect
;
/* establish connection for each transactoin */
char
*
pghost
=
""
;
char
*
pgport
=
NULL
;
char
*
pgoptions
=
NULL
;
char
*
pgtty
=
NULL
;
char
*
login
=
NULL
;
char
*
pwd
=
NULL
;
char
*
dbName
;
typedef
struct
typedef
struct
{
{
PGconn
*
con
;
/* connection handle to DB */
PGconn
*
con
;
/* connection handle to DB */
...
@@ -85,8 +95,8 @@ typedef struct
...
@@ -85,8 +95,8 @@ typedef struct
static
void
static
void
usage
()
usage
()
{
{
fprintf
(
stderr
,
"usage: pgbench [-h hostname][-p port][-c nclients][-t ntransactions][-s scaling_factor][-n][-
v][-S
][-d][dbname]
\n
"
);
fprintf
(
stderr
,
"usage: pgbench [-h hostname][-p port][-c nclients][-t ntransactions][-s scaling_factor][-n][-
C][-v][-S][-U login][-P password
][-d][dbname]
\n
"
);
fprintf
(
stderr
,
"(initialize mode): pgbench -i [-h hostname][-p port][-s scaling_factor][-d][dbname]
\n
"
);
fprintf
(
stderr
,
"(initialize mode): pgbench -i [-h hostname][-p port][-s scaling_factor][-
U login][-P password][-
d][dbname]
\n
"
);
}
}
/* random number generator */
/* random number generator */
...
@@ -96,6 +106,34 @@ getrand(int min, int max)
...
@@ -96,6 +106,34 @@ getrand(int min, int max)
return
(
min
+
(
int
)
(
max
*
1
.
0
*
rand
()
/
(
RAND_MAX
+
1
.
0
)));
return
(
min
+
(
int
)
(
max
*
1
.
0
*
rand
()
/
(
RAND_MAX
+
1
.
0
)));
}
}
/* set up a connection to the backend */
static
PGconn
*
doConnect
()
{
PGconn
*
con
;
con
=
PQsetdbLogin
(
pghost
,
pgport
,
pgoptions
,
pgtty
,
dbName
,
login
,
pwd
);
if
(
con
==
NULL
)
{
fprintf
(
stderr
,
"Connection to database '%s' failed.
\n
"
,
dbName
);
fprintf
(
stderr
,
"Memory allocatin problem?
\n
"
);
return
(
NULL
);
}
if
(
PQstatus
(
con
)
==
CONNECTION_BAD
)
{
fprintf
(
stderr
,
"Connection to database '%s' failed.
\n
"
,
dbName
);
if
(
PQerrorMessage
(
con
))
fprintf
(
stderr
,
"%s"
,
PQerrorMessage
(
con
));
else
fprintf
(
stderr
,
"No explanation from the backend
\n
"
);
return
(
NULL
);
}
return
(
con
);
}
/* throw away response from backend */
/* throw away response from backend */
static
void
static
void
discard_response
(
CState
*
state
)
discard_response
(
CState
*
state
)
...
@@ -110,6 +148,7 @@ discard_response(CState * state)
...
@@ -110,6 +148,7 @@ discard_response(CState * state)
}
while
(
res
);
}
while
(
res
);
}
}
/* check to see if the SQL result was good */
static
int
static
int
check
(
CState
*
state
,
PGresult
*
res
,
int
n
,
int
good
)
check
(
CState
*
state
,
PGresult
*
res
,
int
n
,
int
good
)
{
{
...
@@ -123,7 +162,7 @@ check(CState * state, PGresult *res, int n, int good)
...
@@ -123,7 +162,7 @@ check(CState * state, PGresult *res, int n, int good)
st
->
con
=
NULL
;
st
->
con
=
NULL
;
return
(
-
1
);
return
(
-
1
);
}
}
return
(
0
);
return
(
0
);
/* OK */
}
}
/* process a transaction */
/* process a transaction */
...
@@ -201,11 +240,20 @@ doOne(CState * state, int n, int debug)
...
@@ -201,11 +240,20 @@ doOne(CState * state, int n, int debug)
PQclear
(
res
);
PQclear
(
res
);
discard_response
(
st
);
discard_response
(
st
);
if
(
is_connect
)
{
PQfinish
(
st
->
con
);
st
->
con
=
NULL
;
}
if
(
++
st
->
cnt
>=
nxacts
)
if
(
++
st
->
cnt
>=
nxacts
)
{
{
remains
--
;
/* I've done */
remains
--
;
/* I've done */
if
(
st
->
con
!=
NULL
)
{
PQfinish
(
st
->
con
);
PQfinish
(
st
->
con
);
st
->
con
=
NULL
;
st
->
con
=
NULL
;
}
return
;
return
;
}
}
break
;
break
;
...
@@ -217,6 +265,19 @@ doOne(CState * state, int n, int debug)
...
@@ -217,6 +265,19 @@ doOne(CState * state, int n, int debug)
st
->
state
=
0
;
st
->
state
=
0
;
}
}
if
(
st
->
con
==
NULL
)
{
if
((
st
->
con
=
doConnect
())
==
NULL
)
{
fprintf
(
stderr
,
"Client %d aborted in establishing connection.
\n
"
,
n
);
remains
--
;
/* I've aborted */
PQfinish
(
st
->
con
);
st
->
con
=
NULL
;
return
;
}
}
switch
(
st
->
state
)
switch
(
st
->
state
)
{
{
case
0
:
/* about to start */
case
0
:
/* about to start */
...
@@ -295,11 +356,20 @@ doSelectOnly(CState * state, int n, int debug)
...
@@ -295,11 +356,20 @@ doSelectOnly(CState * state, int n, int debug)
PQclear
(
res
);
PQclear
(
res
);
discard_response
(
st
);
discard_response
(
st
);
if
(
is_connect
)
{
PQfinish
(
st
->
con
);
st
->
con
=
NULL
;
}
if
(
++
st
->
cnt
>=
nxacts
)
if
(
++
st
->
cnt
>=
nxacts
)
{
{
remains
--
;
/* I've done */
remains
--
;
/* I've done */
if
(
st
->
con
!=
NULL
)
{
PQfinish
(
st
->
con
);
PQfinish
(
st
->
con
);
st
->
con
=
NULL
;
st
->
con
=
NULL
;
}
return
;
return
;
}
}
break
;
break
;
...
@@ -311,6 +381,19 @@ doSelectOnly(CState * state, int n, int debug)
...
@@ -311,6 +381,19 @@ doSelectOnly(CState * state, int n, int debug)
st
->
state
=
0
;
st
->
state
=
0
;
}
}
if
(
st
->
con
==
NULL
)
{
if
((
st
->
con
=
doConnect
())
==
NULL
)
{
fprintf
(
stderr
,
"Client %d aborted in establishing connection.
\n
"
,
n
);
remains
--
;
/* I've aborted */
PQfinish
(
st
->
con
);
st
->
con
=
NULL
;
return
;
}
}
switch
(
st
->
state
)
switch
(
st
->
state
)
{
{
case
0
:
case
0
:
...
@@ -349,7 +432,7 @@ disconnect_all(CState * state)
...
@@ -349,7 +432,7 @@ disconnect_all(CState * state)
/* create tables and setup data */
/* create tables and setup data */
static
void
static
void
init
(
char
*
pghost
,
char
*
pgport
,
char
*
dbName
)
init
()
{
{
PGconn
*
con
;
PGconn
*
con
;
PGresult
*
res
;
PGresult
*
res
;
...
@@ -366,13 +449,8 @@ init(char *pghost, char *pgport, char *dbName)
...
@@ -366,13 +449,8 @@ init(char *pghost, char *pgport, char *dbName)
int
i
;
int
i
;
con
=
PQsetdb
(
pghost
,
pgport
,
NULL
,
NULL
,
dbName
);
if
((
con
=
doConnect
())
==
NULL
)
if
(
PQstatus
(
con
)
==
CONNECTION_BAD
)
{
fprintf
(
stderr
,
"Connection to database '%s' on %s failed.
\n
"
,
dbName
,
pghost
);
fprintf
(
stderr
,
"%s"
,
PQerrorMessage
(
con
));
exit
(
1
);
exit
(
1
);
}
for
(
i
=
0
;
i
<
(
sizeof
(
DDLs
)
/
sizeof
(
char
*
));
i
++
)
for
(
i
=
0
;
i
<
(
sizeof
(
DDLs
)
/
sizeof
(
char
*
));
i
++
)
{
{
...
@@ -524,6 +602,7 @@ printResults(
...
@@ -524,6 +602,7 @@ printResults(
printf
(
"tps = %f(excluding connections establishing)
\n
"
,
t2
);
printf
(
"tps = %f(excluding connections establishing)
\n
"
,
t2
);
}
}
int
int
main
(
int
argc
,
char
**
argv
)
main
(
int
argc
,
char
**
argv
)
{
{
...
@@ -532,9 +611,6 @@ main(int argc, char **argv)
...
@@ -532,9 +611,6 @@ main(int argc, char **argv)
opterr
,
opterr
,
optopt
;
optopt
;
int
c
;
int
c
;
char
*
pghost
=
NULL
;
char
*
pgport
=
NULL
;
char
*
dbName
;
int
is_init_mode
=
0
;
/* initialize mode? */
int
is_init_mode
=
0
;
/* initialize mode? */
int
is_no_vacuum
=
0
;
/* no vacuum at all before
int
is_no_vacuum
=
0
;
/* no vacuum at all before
* testing? */
* testing? */
...
@@ -564,7 +640,7 @@ main(int argc, char **argv)
...
@@ -564,7 +640,7 @@ main(int argc, char **argv)
PGconn
*
con
;
PGconn
*
con
;
PGresult
*
res
;
PGresult
*
res
;
while
((
c
=
getopt
(
argc
,
argv
,
"ih:nvp:dc:t:s:S"
))
!=
EOF
)
while
((
c
=
getopt
(
argc
,
argv
,
"ih:nvp:dc:t:s:
U:P:C
S"
))
!=
EOF
)
{
{
switch
(
c
)
switch
(
c
)
{
{
...
@@ -615,6 +691,9 @@ main(int argc, char **argv)
...
@@ -615,6 +691,9 @@ main(int argc, char **argv)
}
}
#endif
/* #ifndef __CYGWIN__ */
#endif
/* #ifndef __CYGWIN__ */
break
;
break
;
case
'C'
:
is_connect
=
1
;
break
;
case
's'
:
case
's'
:
tps
=
atoi
(
optarg
);
tps
=
atoi
(
optarg
);
if
(
tps
<=
0
)
if
(
tps
<=
0
)
...
@@ -631,6 +710,12 @@ main(int argc, char **argv)
...
@@ -631,6 +710,12 @@ main(int argc, char **argv)
exit
(
1
);
exit
(
1
);
}
}
break
;
break
;
case
'U'
:
login
=
optarg
;
break
;
case
'P'
:
pwd
=
optarg
;
break
;
default:
default:
usage
();
usage
();
exit
(
1
);
exit
(
1
);
...
@@ -649,7 +734,7 @@ main(int argc, char **argv)
...
@@ -649,7 +734,7 @@ main(int argc, char **argv)
if
(
is_init_mode
)
if
(
is_init_mode
)
{
{
init
(
pghost
,
pgport
,
dbName
);
init
(
);
exit
(
0
);
exit
(
0
);
}
}
...
@@ -662,7 +747,10 @@ main(int argc, char **argv)
...
@@ -662,7 +747,10 @@ main(int argc, char **argv)
}
}
/* opening connection... */
/* opening connection... */
con
=
PQsetdb
(
pghost
,
pgport
,
NULL
,
NULL
,
dbName
);
con
=
doConnect
();
if
(
con
==
NULL
)
exit
(
1
);
if
(
PQstatus
(
con
)
==
CONNECTION_BAD
)
if
(
PQstatus
(
con
)
==
CONNECTION_BAD
)
{
{
fprintf
(
stderr
,
"Connection to database '%s' failed.
\n
"
,
dbName
);
fprintf
(
stderr
,
"Connection to database '%s' failed.
\n
"
,
dbName
);
...
@@ -746,14 +834,12 @@ main(int argc, char **argv)
...
@@ -746,14 +834,12 @@ main(int argc, char **argv)
/* get start up time */
/* get start up time */
gettimeofday
(
&
tv1
,
0
);
gettimeofday
(
&
tv1
,
0
);
if
(
is_connect
==
0
)
{
/* make connections to the database */
/* make connections to the database */
for
(
i
=
0
;
i
<
nclients
;
i
++
)
for
(
i
=
0
;
i
<
nclients
;
i
++
)
{
{
state
[
i
].
con
=
PQsetdb
(
pghost
,
pgport
,
NULL
,
NULL
,
dbName
);
if
((
state
[
i
].
con
=
doConnect
())
==
NULL
)
if
(
PQstatus
(
state
[
i
].
con
)
==
CONNECTION_BAD
)
{
fprintf
(
stderr
,
"Connection to database '%s' failed.
\n
"
,
dbName
);
fprintf
(
stderr
,
"%s"
,
PQerrorMessage
(
state
[
i
].
con
));
exit
(
1
);
exit
(
1
);
}
}
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment