diff options
author | Bruce Momjian <bruce@momjian.us> | 2007-11-10 23:30:46 +0000 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 2007-11-10 23:30:46 +0000 |
commit | c3c69ab4fd25a20749b850d34cbc8ce3f1812e3b (patch) | |
tree | a7d9b4501297216ac71f597dca3840090ae791d5 /contrib/pgbench | |
parent | 6e414a171e8a91966b10ecd14aa367422870bdd2 (diff) | |
download | postgresql-c3c69ab4fd25a20749b850d34cbc8ce3f1812e3b.tar.gz |
Move most /contrib README files into SGML. Some still need conversion
or will never be converted.
Diffstat (limited to 'contrib/pgbench')
-rw-r--r-- | contrib/pgbench/README.pgbench | 284 |
1 files changed, 0 insertions, 284 deletions
diff --git a/contrib/pgbench/README.pgbench b/contrib/pgbench/README.pgbench deleted file mode 100644 index b8572319e1..0000000000 --- a/contrib/pgbench/README.pgbench +++ /dev/null @@ -1,284 +0,0 @@ -$PostgreSQL: pgsql/contrib/pgbench/README.pgbench,v 1.20 2007/07/06 20:17:02 wieck Exp $ - -pgbench README - -o What is pgbench? - - pgbench is a simple program to run a benchmark test. pgbench is a - client application of PostgreSQL and runs with PostgreSQL only. It - performs lots of small and simple transactions including - SELECT/UPDATE/INSERT operations then calculates number of - transactions successfully completed within a second (transactions - per second, tps). Targeting data includes a table with at least 100k - tuples. - - Example outputs from pgbench look like: - - number of clients: 4 - number of transactions per client: 100 - number of processed transactions: 400/400 - tps = 19.875015(including connections establishing) - tps = 20.098827(excluding connections establishing) - - Similar program called "JDBCBench" already exists, but it requires - Java that may not be available on every platform. Moreover some - people concerned about the overhead of Java that might lead - inaccurate results. So I decided to write in pure C, and named - it "pgbench." - -o features of pgbench - - - pgbench is written in C using libpq only. So it is very portable - and easy to install. - - - pgbench can simulate concurrent connections using asynchronous - capability of libpq. No threading is required. - -o How to install pgbench - - $make - $make install - -o How to use pgbench? - - (1) (optional)Initialize database by: - - pgbench -i <dbname> - - where <dbname> is the name of database. pgbench uses four tables - accounts, branches, history and tellers. These tables will be - destroyed. Be very careful if you have tables having same - names. Default test data contains: - - table # of tuples - ------------------------- - branches 1 - tellers 10 - accounts 100000 - history 0 - - You can increase the number of tuples by using -s option. branches, - tellers and accounts tables are created with a fillfactor which is - set using -F option. See below. - - (2) Run the benchmark test - - pgbench <dbname> - - The default configuration is: - - number of clients: 1 - number of transactions per client: 10 - -o options - - pgbench has number of options. - - -h hostname - hostname where the backend is running. If this option - is omitted, pgbench will connect to the localhost via - Unix domain socket. - - -p port - the port number that the backend is accepting. default is - libpq's default, usually 5432. - - -c number_of_clients - Number of clients simulated. default is 1. - - -t number_of_transactions - Number of transactions each client runs. default is 10. - - -s scaling_factor - this should be used with -i (initialize) option. - number of tuples generated will be multiple of the - scaling factor. For example, -s 100 will imply 10M - (10,000,000) tuples in the accounts table. - default is 1. NOTE: scaling factor should be at least - as large as the largest number of clients you intend - to test; else you'll mostly be measuring update contention. - Regular (not initializing) runs using one of the - built-in tests will detect scale based on the number of - branches in the database. For custom (-f) runs it can - be manually specified with this parameter. - - -D varname=value - Define a variable. It can be refered to by a script - provided by using -f option. Multiple -D options are allowed. - - -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 - No vacuuming and cleaning the history table prior to the - test is performed. - - -v - Do vacuuming before testing. This will take some time. - With neither -n nor -v, pgbench will vacuum tellers and - branches tables only. - - -S - Perform select only transactions instead of TPC-B. - - -N Do not update "branches" and "tellers". This will - avoid heavy update contention on branches and tellers, - while it will not make pgbench supporting TPC-B like - transactions. - - -f filename - Read transaction script from file. Detailed - explanation will appear later. - - -C - Establish connection for each transaction, rather than - doing it just once at beginning of pgbench in the normal - mode. This is useful to measure the connection overhead. - - -l - Write the time taken by each transaction to a logfile, - with the name "pgbench_log.xxx", where xxx is the PID - of the pgbench process. The format of the log is: - - client_id transaction_no time file_no time-epoch time-us - - where time is measured in microseconds, , the file_no is - which test file was used (useful when multiple were - specified with -f), and time-epoch/time-us are a - UNIX epoch format timestamp followed by an offset - in microseconds (suitable for creating a ISO 8601 - timestamp with a fraction of a second) of when - the transaction completed. - - Here are example outputs: - - 0 199 2241 0 1175850568 995598 - 0 200 2465 0 1175850568 998079 - 0 201 2513 0 1175850569 608 - 0 202 2038 0 1175850569 2663 - - -F fillfactor - - Create tables(accounts, tellers and branches) with the given - fillfactor. Default is 100. This should be used with -i - (initialize) option. - - -d - debug option. - - -o What is the "transaction" actually performed in pgbench? - - (1) begin; - - (2) update accounts set abalance = abalance + :delta where aid = :aid; - - (3) select abalance from accounts where aid = :aid; - - (4) update tellers set tbalance = tbalance + :delta where tid = :tid; - - (5) update branches set bbalance = bbalance + :delta where bid = :bid; - - (6) insert into history(tid,bid,aid,delta) values(:tid,:bid,:aid,:delta); - - (7) end; - -If you specify -N, (4) and (5) aren't included in the transaction. - -o -f option - - This supports for reading transaction script from a specified - file. This file should include SQL commands in each line. SQL - command consists of multiple lines are not supported. Empty lines - and lines begging with "--" will be ignored. - - Multiple -f options are allowed. In this case each transaction is - assigned randomly chosen script. - - SQL commands can include "meta command" which begins with "\" (back - slash). A meta command takes some arguments separted by white - spaces. Currently following meta command is supported: - - \set name operand1 [ operator operand2 ] - set the calculated value using "operand1" "operator" - "operand2" to variable "name". If "operator" and "operand2" - are omitted, the value of operand1 is set to variable "name". - - example: - - \set ntellers 10 * :scale - - \setrandom name min max - - assign random integer to name between min and max - - example: - - \setrandom aid 1 100000 - - variables can be reffered to in SQL comands by adding ":" in front - of the varible name. - - example: - - SELECT abalance FROM accounts WHERE aid = :aid - - Variables can also be defined by using -D option. - - \sleep num [us|ms|s] - - causes script execution to sleep for the specified duration of - microseconds (us), milliseconds (ms) or the default seconds (s). - - example: - - \setrandom millisec 1000 2500 - \sleep :millisec ms - - Example, TPC-B like benchmark can be defined as follows(scaling - factor = 1): - -\set nbranches :scale -\set ntellers 10 * :scale -\set naccounts 100000 * :scale -\setrandom aid 1 :naccounts -\setrandom bid 1 :nbranches -\setrandom tid 1 :ntellers -\setrandom delta 1 10000 -BEGIN -UPDATE accounts SET abalance = abalance + :delta WHERE aid = :aid -SELECT abalance FROM accounts WHERE aid = :aid -UPDATE tellers SET tbalance = tbalance + :delta WHERE tid = :tid -UPDATE branches SET bbalance = bbalance + :delta WHERE bid = :bid -INSERT INTO history (tid, bid, aid, delta, mtime) VALUES (:tid, :bid, :aid, :delta, 'now') -END - -If you want to automatically set the scaling factor from the number of -tuples in branches table, use -s option and shell command like this: - -pgbench -s $(psql -At -c "SELECT count(*) FROM branches") -f tpc_b.sql - -Notice that -f option does not execute vacuum and clearing history -table before starting benchmark. - -o License? - -Basically it is same as BSD license. See pgbench.c for more details. - -o History before contributed to PostgreSQL - -2000/1/15 pgbench-1.2 contributed to PostgreSQL - * Add -v option - -1999/09/29 pgbench-1.1 released - * Apply cygwin patches contributed by Yutaka Tanida - * More robust when backends die - * Add -S option (select only) - -1999/09/04 pgbench-1.0 released |