mirror of
				https://github.com/postgres/postgres.git
				synced 2025-10-31 10:30:33 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			149 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			149 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| pgbench 1.2 README		2000/1/15 Tatsuo Ishii (t-ishii@sra.co.jp)
 | |
| 
 | |
| o What is pgbench?
 | |
| 
 | |
|   pgbench is a simple program to run a benchmark test sort of
 | |
|   "TPC-B". 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
 | |
| 
 | |
|  (1) Edit the first line in Makefile
 | |
| 
 | |
| 	POSTGRESHOME = /usr/local/pgsql
 | |
| 
 | |
|      so that it points to the directory where PostgreSQL installed.
 | |
| 
 | |
|  (2) Run configure
 | |
| 
 | |
|  (3) Run make. You will see an executable file "pgbench" there.
 | |
| 
 | |
| o How to use pgbench?
 | |
| 
 | |
|   (1) 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 carefully 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. 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
 | |
| 		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.
 | |
| 
 | |
| 	-n
 | |
| 		No vacuuming and cleaning the history table prior the
 | |
| 		test is performed.
 | |
| 
 | |
| 	-v
 | |
| 		Do vacuuming before testing. This will take some time.
 | |
| 		Without both -n and -v pgbench will vacuum tellers and
 | |
| 		branches tables only.
 | |
| 
 | |
| 	-S
 | |
| 		Perform select only transactions instead of TPC-B.
 | |
| 
 | |
| 	-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;
 | |
| 
 | |
| o License?
 | |
| 
 | |
| Basically it is same as BSD license. See pgbench.c for more details.
 | |
| 
 | |
| o History
 | |
| 
 | |
| 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 |