postgresql压力测试工具用法以及参数解读

pgbench是PostgreSQL自带的一个数据库压力测试工具,

支持TPC-B测试模型, 或自定义测试模型.

自定义测试模型支持元命令, 调用shell脚本, 设置随机数, 变量等等.

支持3种异步接口[simple|extended|prepared]

参数详解列表

// TPC-B测试模型的初始化数据参数.
Initialization options:
-i invokes initialization mode            //初始化参数
-F NUM fill factor
-n do not run VACUUM after initialization // 使用自定义测试模型时, 请带上这个参数.
-q quiet logging (one message each 5 seconds)
-s NUM scaling factor
--foreign-keys  create foreign key constraints between tables          //表之间添加主外键;更加贴近线上环境
-index-tablespace=TABLESPACE create indexes in the specified tablespace
--tablespace=TABLESPACE  create tables in the specified tablespace
--unlogged-tables create tables as unlogged tables

// 压力测试相关参数
Benchmarking options:
-c NUM number of concurrent database clients (default: 1) // 指定pgbench连接到数据库的连接数
-C establish new connection for each transaction // 是否使用短连接
-D VARNAME=VALUE // 设置变量, 在自定义脚本中使用:varname 引用. 可使用多个-D设置多个变量.
-f FILENAME read transaction script from FILENAME // 指定自定义的测试文件(由元命令和SQL组成), 可使用多个-f 指定多个文件, 每个文件作为一个事务, 每次执行事务时随机选择一个文件执行.
-j NUM number of threads (default: 1) // pgbench的工作线程. 为-c一起用;为-c的约数
-l write transaction times to log file // 开启事务统计, 输出文件名格式pgbench_log.$PID.$threadID , (当-j >= 2时, threadID从1开始)
-M simple|extended|prepared // libpq接口  default: simple
-n do not run VACUUM before tests // vacuum开关, 使用自定义文件时, 使用-n关闭vacuum.
-N do not update tables "pgbench_tellers" and "pgbench_branches" // TPC-B 非默认测试模式, 少两个表的更新.
-r report average latency per command // 报告测试文件中每条命令(包括元命令和SQL)的平均执行延迟.
-s NUM report this scale factor in output // 使用自定义脚本测试时, 指定scale的输出. 没有实质意义.
-S perform SELECT-only transactions // TPC-B 非默认测试模式, 只查询.
-t NUM number of transactions each client runs (default: 10) // 指定每个连接的执行事务数.
-T NUM duration of benchmark test in seconds // 指定总的压力测试时间. 与-t不能同时使用.
-v vacuum all four standard tables before tests // 测试前先vacuum 4个和tpc-b相关的表.
--aggregate-interval=NUM // 输出聚合后的事务统计信息. 与-l连用

//Common options:
  -d, --debug              print debugging output
  -h, --host=HOSTNAME      database server host or socket directory
  -p, --port=PORT          database server port number
  -U, --username=USERNAME  connect as specified database user
  -V, --version            output version information, then exit
  -?, --help               show this help, then exit

一 初始化;这里我使用了自己的数据库mydb;数据用户lottu

pgbench -i -s 10 --foreign-keys --unlogged-tables -U lottu mydb

操作之后会在数据库里面生成下面的表

mydb=> \dt pgbench*
             List of relations
 Schema |       Name       | Type  | Owner
--------+------------------+-------+-------
 public | pgbench_accounts | table | lottu
 public | pgbench_branches | table | lottu
 public | pgbench_history  | table | lottu
 public | pgbench_tellers  | table | lottu
(4 rows)

二 压力测试演示

[[email protected]_210 ~]$ pgbench -M prepared -r -c 10 -j 2 -T 10 -U lottu mydb
starting vacuum...end.                                            --默认是非n模式
transaction type: TPC-B (sort of)
scaling factor: 10                                                   --跟上面初始化-s 10一致的
query mode: prepared                                          -- -M prepared 默认为simple
number of clients: 10                                            --客户端连接有10个   -c 10
number of threads: 2                                             --线程为2个    -j2
duration: 10 s                                                         --时间为10s     -T 10
number of transactions actually processed: 146890
latency average: 0.681 ms
tps = 14687.531247 (including connections establishing)
tps = 14690.762892 (excluding connections establishing)
statement latencies in milliseconds:
        0.001784        \set nbranches 1 * :scale
        0.000633        \set ntellers 10 * :scale
        0.000483        \set naccounts 100000 * :scale
        0.001076        \setrandom aid 1 :naccounts
        0.000647        \setrandom bid 1 :nbranches
        0.000654        \setrandom tid 1 :ntellers
        0.000762        \setrandom delta -5000 5000
        0.034427        BEGIN;
        0.094350        UPDATE pgbench_accounts SET abalance = abalance + :delta WHERE aid = :aid;
        0.064211        SELECT abalance FROM pgbench_accounts WHERE aid = :aid;
        0.110995        UPDATE pgbench_tellers SET tbalance = tbalance + :delta WHERE tid = :tid;
        0.154680        UPDATE pgbench_branches SET bbalance = bbalance + :delta WHERE bid = :bid;
        0.155552        INSERT INTO pgbench_history (tid, bid, aid, delta, mtime) VALUES (:tid, :bid, :aid, :delta, CURRENT_TIMESTAMP);
        0.052141        END;

--使用-l参数结合 --aggregate-interval  演示
[[email protected]_210 ~]$ pgbench -M extended --aggregate-interval 2 -l  -c 2 -j 2 -T 10 -U lottu mydb
starting vacuum...end.
transaction type: TPC-B (sort of)
scaling factor: 10
query mode: extended
number of clients: 2
number of threads: 2
duration: 10 s
number of transactions actually processed: 22613
latency average: 0.884 ms
tps = 2261.073893 (including connections establishing)
tps = 2261.413071 (excluding connections establishing)

--这样会生成文件
[[email protected]_210 ~]$ ll pgbench_log.5160*
-rw-rw-r-- 1 postgres postgres 211 Jun 28 16:37 pgbench_log.5160
-rw-rw-r-- 1 postgres postgres 210 Jun 28 16:37 pgbench_log.5160.1

查看文件内容可以判断测试结果!
[[email protected]_210 ~]$ cat pgbench_log.5160
1467103061 1864 1663000 1739000000 0 9000
1467103063 2256 1998000 2000000000 0 2000
1467103065 2268 1997000 2001000000 0 2000
1467103067 2271 1996000 1998000000 0 2000
1467103069 2250 1996000 2268000000 0 17000
这5列分别代表
interval_start // epoch时间, 指这个统计段的开始时间.
num_of_transactions // 这个统计段运行了多少个"事务", 指独立的文件运行次数.
latency_sum // 这个统计段的事务执行总耗时, 单位微秒.
latency_2_sum // 这个统计段的事务执行耗时平方的总和, 单位微秒.
min_latency // 这个统计段内, 单个事务的最小耗时.
max_latency // 这个统计段内, 单个事务的最大耗时.

--参考德哥视频讲解

时间: 2024-10-17 13:56:41

postgresql压力测试工具用法以及参数解读的相关文章

apache自带的ab压力测试工具用法详解

ab是apache自带的一个很好用的压力测试工具,当安装完apache的时候,就可以在bin下面找到ab 1 我们可以模拟100个并发用户,对一个页面发送1000个请求 ./ab -n1000 -c100 http://www.baidu.com 其中-n代表请求数,-c代表并发数 返回结果: ##首先是apache的版本信息 This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Ze

Sysbench压力测试工具简介和使用(一)

sysbench压力测试工具安装和参数介绍 一.sysbench压力测试工具简介: sysbench是一个开源的.模块化的.跨平台的多线程性能测试工具,可以用来进行CPU.内存.磁盘I/O.线程.数据库的性能测试.目前支持的数据库有MySQL.Oracle和PostgreSQL.以下操作都将以支持MySQL数据库为例进行. 1.      sysbench工具安装: 默认支持<span "="">MySQL,如果需要测试<span "="

压力测试工具tsung用法简介

tsung是用erlang开发的一款简单易用的压力测试工具,可以生成成千上万的用户模拟对服务器进行访问.目前对tsung的理解也仅限于会简单的应用,其内部结构没有深入研究过. 1.安装 tsung是用erlang编写的,所以首先安装erlang的运行环境.然后就是按照tsung的官网下载编译tsung.需要注意的是,生成测试报告需要gnuplot和perl的支持,其中perl需要安装Template扩展.具体安装过程请看相关手册或者google之. 2.配置文件 默认情况下,tsung会加载配置

【Apache】Apache ab压力测试工具Window下载和用法详解

ab是apache自带的网站压力测试工具. 使用起来非常的简单和方便. 不仅仅是可以apache服务器进行网站访问压力测试,还可以对其他类型的服务器进行压力测试. 比如nginx,tomcat,IIS等 首先当然是下载安装了. 在这里只讲window下在下载安装 官方下载地址:,(https://www.apachehaus.com/cgi-bin/download.plx) 下载完成后解压 修改解压根目录下的conf/httpd.conf文件的端口配置,默认是80端口,应该是被占用了,无法安装

压力测试工具siege的用法

压力测试工具siege的用法 Siege是linux下的一个web系统的压力测试工具,支持多链接,支持get和post请求,可以对web系统进行多并发下持续请求的压力测试. 安装 Siege 01 02 03 04 #wget http://www.joedog.org/pub/siege/siege-latest.tar.gz #tar -xzvf siege-latest.tar.gz #./configure; make #make install Siege命令常用参数 -c 200 指

[转载]压力测试工具siege的用法

压力测试工具siege 原文:http://blog.csdn.net/qingye2008/article/details/34500949 Siege是Linux下的一个web系统的压力测试工具,支持多链接,支持get和post请求,可以对web系统进行多并发下持续请求的压力测试. 安装 Siege 01 02 03 04 #wget http://www.joedog.org/pub/siege/siege-latest.tar.gz #tar -xzvf siege-latest.tar

九款Web服务器性能压力测试工具

一.http_load 程序非常小,解压后也不到100Khttp_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载.但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般不会把客户机搞死.还可以测试HTTPS类的网站请求.下载地址:http_load-12mar2006.tar.gz安装很简单 #tar zxvf http_load-12mar2006.tar.gz#cd http_load-12mar2006#make && make install 基本用法:

Linux下四款Web服务器压力测试工具(http_load、webbench、ab、siege)介绍

一.http_load程序非常小,解压后也不到100Khttp_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载.但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般不会把客户机搞死.还可以测试HTTPS类的网站请求. 下载地址:http://soft.vpser.net/test/http_load/http_load-12mar2006.tar.gz 安装#tar zxvf http_load-12mar2006.tar.gz#cd http_load-12mar

[转]web服务器压力测试工具

http_load学习心得: 测试网站每秒所能承受的平均访问量(吞吐量) http_load -parallel 5 -fetches 1000 urls.txt这段命令行是同时使用5个进程,随机访问urls.txt中的网址列表,总共访问1000次.运行之后的结果: 1000 fetches, 5 max parallel, 6e+06 bytes, in 58.1026 seconds6000 mean bytes/connection17.2109 fetches/sec, 103266 b