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  --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
( rows)

二 压力测试演示

   -U lottu mydb
starting vacuum...end.                                            --默认是非n模式
transaction type: TPC-B (sort of)
scaling factor:                                                    --跟上面初始化-s 10一致的
query mode: prepared                                          -- -M prepared 默认为simple
                                            --客户端连接有10个   -c 10
                                             --线程为2个    -j2
duration:  s                                                         --时间为10s     -T 10

latency average: 0.681 ms
tps = 14687.531247 (including connections establishing)
tps = 14690.762892 (excluding connections establishing)
statement latencies in milliseconds:
         * :scale
         * :scale
         * :scale
         :naccounts
         :nbranches
         :ntellers

        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  演示
[postgres@sdserver40_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:
query mode: extended

duration:  s

latency average: 0.884 ms
tps = 2261.073893 (including connections establishing)
tps = 2261.413071 (excluding connections establishing)

--这样会生成文件
*
-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

查看文件内容可以判断测试结果!

这5列分别代表
interval_start // epoch时间, 指这个统计段的开始时间.
num_of_transactions // 这个统计段运行了多少个"事务", 指独立的文件运行次数.
latency_sum // 这个统计段的事务执行总耗时, 单位微秒.
latency_2_sum // 这个统计段的事务执行耗时平方的总和, 单位微秒.
min_latency // 这个统计段内, 单个事务的最小耗时.
max_latency // 这个统计段内, 单个事务的最大耗时.

--参考德哥视频讲解

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

  1. sysbench压力测试工具安装和参数介绍

    一.sysbench压力测试工具简介: sysbench是一个开源的.模块化的.跨平台的多线程性能测试工具,可以用来进行CPU.内存.磁盘I/O.线程.数据库的性能测试.目前支持的数据库有MySQL. ...

  2. Linux压力测试工具stress的参数详解

    为了测试服务器的负载情况,可以使用stress这个压力测试工具,可以在环境上验证测试下. stress安装 sudo yum install -y epel-release sudo yum inst ...

  3. sysbench压力测试工具简介和使用(一)

    sysbench压力测试工具安装和参数介绍 一.sysbench压力测试工具简介: sysbench是一个开源的.模块化的.跨平台的多线程性能测试工具,可以用来进行CPU.内存.磁盘I/O.线程.数据 ...

  4. Apache自带压力测试工具ab用法简介

    ab命令原理 ab命令会创建很多的并发访问线程,模拟多个访问者同时对某一URL进行访问.它的测试目标是基于URL的,因此,既可以用来测试Apache的负载压力,也可以测试nginx.lighthttp ...

  5. 压力测试工具siege的用法

    Siege是linux下的一个web系统的压力测试工具,支持多链接,支持get和post请求,可以对web系统进行多并发下持续请求的压力测试. 安装 Siege 01 02 03 04 #wget h ...

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

    压力测试工具siege 原文:http://blog.csdn.net/qingye2008/article/details/34500949 Siege是Linux下的一个web系统的压力测试工具, ...

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

    一.http_load 程序非常小,解压后也不到100Khttp_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载.但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般不会 ...

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

    一.http_load程序非常小,解压后也不到100Khttp_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载.但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般不会把 ...

  9. [转] CentOS单独安装Apache Benchmark压力测试工具的办法

    Apache安装包中自带的压力测试工具 Apache Benchmark(简称ab) 简单易用,这里就采用 ab作为压力测试工具了. 1.独立安装 ab运行需要依赖apr-util包,安装命令为: 1 ...

随机推荐

  1. flock防止重复rsync

    我使用crontab同步一个文件夹时,发现一个问题,我在crontab中设置的1分钟运行一次.但当那个文件夹的内容改变时.1分钟不一定能同步完,但这时第二个rsync进行又起来了. 这个就产生一个问题 ...

  2. jQuery中的siblings

    所谓siblings,英文翻译就是兄弟节点.那么故名思意,就是拿到某元素的兄弟节点(不包括自己). <html> <head> <script type="te ...

  3. 树形DP(01组合背包The Ghost Blows Light HDU4276)

    题意:有n个房间,之间用n-1条道路连接,每个房间都有一个定时炸弹,在T时间后会一起爆炸,第i个房间有pi价值的珠宝,经过每条道路都需要花费一定的时间,一个人从1房间开始 ,从n房间出去,保证再不炸死 ...

  4. php初探

    1.php中的连接符.可以连接多个字符串,相当于java中的+ 2.echo必须与后面的输出内容有至少一个空格 3.php编程中每个结尾都需要添加分号

  5. paper 83:前景检测算法_1(codebook和平均背景法)

    前景分割中一个非常重要的研究方向就是背景减图法,因为背景减图的方法简单,原理容易被想到,且在智能视频监控领域中,摄像机很多情况下是固定的,且背景也是基本不变或者是缓慢变换的,在这种场合背景减图法的应用 ...

  6. libSVM的数据格式

    首先介绍一下 libSVM的数据格式 Label 1:value 2:value -. Label:是类别的标识,比如上节train.model中提到的1 -1,你可以自己随意定,比如-10,0,15 ...

  7. linux中查看硬件温度的命令

    用到的命令是: sensors 这个命令来自一个叫 lm_sensors 的包. 执行 sensors-detect 可以以询问的方式做一些配置(可以选择检测哪些硬件的温度).

  8. linux下在eclipse上运行hadoop自带例子wordcount

    启动eclipse:打开windows->open perspective->other->map/reduce 可以看到map/reduce开发视图.设置Hadoop locati ...

  9. android textView 添加超链接(两种实现方式)

    在textView添加超链接,有两种方式,第一种通过HTML格式化你的网址,一种是设置autolink,让系统自动识别超链接,下面为大家介绍下这两种方法的实现 在textView添加超链接,有两种方式 ...

  10. 【python cookbook】【字符串与文本】11.从字符串中去掉不需要的字符

    问题:在字符串的开始.结尾或中间去掉不需要的字符,比如说空格符 解决方案: 1.字符串开始或结尾处去掉字符:str.strip() 2.从左或从右侧开始执行去除字符:str.lstrip().str. ...