阅读754 返回首页    go 魔兽


PostgreSQL压测工具之pgbench-tools使用指南

最近一直在思考,到底贡献些什么给PG社区呢?

pg

作为一名初学者,该给大家展现一些什么样的内容呢?曾经想过写一些入门指南,但是google一下发现已经有不少资料,并且好书也不少,那有什么是比较难找到的,没错,那就是实战经验,今天给大家介绍一个利器:pgbench-tools,有此利器,登上人生巅峰,当上CEO,迎娶白富美就不是梦了,废话不多说,请跟我一起来进入这神圣殿堂,享受这个美好的过程。

前因后果

pgbench-tools是作者Greg Smith在使用原生pgbench过程中,发现每次运行产生的结果都不一致,而这个工具就正好解决了问题,解决方案:每个测试用例都运行N次,并且这些用例比通常用要更多的事务,最后将这些测试结果计算出一个平均值。

有一个很酷的功能:测试结果以各种3D、2D图的方式展示,让用户一目了然。

牛刀小试

  • 创建数据库

    createdb results
    createdb pgbench
    
  • 下载pgbench-tools工具

    cd ~
    mkdir -p test
    git clone https://github.com/gregs1104/pgbench-tools.git
    
  • 初始化

    cd pgbench-tools
    psql -f init/resultdb.sql -d results
    
  • 创建测试结果集

    ./newset 'Initial Config'
    
  • 运行测试

    ./runset
    

    TIPS:可编辑配置文件config,添加需要测试的用例,默认测试用例是运行一个时长1分钟的只有SELECT功能。

    运行结果保存在results目录下

  • 查看报告

    psql -d results -f reports/report.sql
    

    TIPS: reports目录下提供了几个强力的工具,比如大家关心的tps统计,有兴趣的同学可以动手完备起来并贡献给社区。

    如果手动修改了测试结果,还可以使用以下命令重新生成报告图片

    ./webreport
    

学会偷"懒"

看到上述这么多命令,作为一名优秀的**懒**程序员,必须想办法让工作高效起来,把这些命令封装到一个脚本,比如叫pgbenchv2.sh
注意该脚本是基于config配置文件编写,脚本里用到的内容请在测试前修改相关变量。

#!/bin/bash
#-----------------------------------------------------
# @filename pgbenchv2.sh
#
# @author 铄懿
# @date 2015-12-19 10:00:00
#-----------------------------------------------------
export PATH=/opt/pgsql/bin:$PATH
source ./config

DROPDBSQL="dropdb -h $TESTHOST -U $TESTUSER -p $TESTPORT"
CREATEDBSQL="createdb -h $TESTHOST -U $TESTUSER -p $TESTPORT"
RESULTPSQL="psql -h $RESULTHOST -U $RESULTUSER -p $RESULTPORT -d $RESULTDB"

print() {
    msg=$1
    echo -ne "[`date`]${msg}\n"
}

execute() {
    cmd=$1
    param=$2
    print "[$FUNCNAME:$LINENO BEGIN] $cmd $param"
    $cmd $param
    [ "$?" -ne 0 ] && {
        print "execute command:$cmd $param FAILED!!!" $red
        exit 1
    }
    print "[$FUNCNAME:$LINENO END] $cmd $param"
}

drop_testdb() {
    execute "$DROPDBSQL" "$RESULTDB"
    execute "$DROPDBSQL" "$TESTDB"
}

create_testdb() {
    execute "$CREATEDBSQL" "$RESULTDB"
    execute "$CREATEDBSQL" "$TESTDB"
}

init_results() {
    $RESULTPSQL -f $BASEDIR/init/resultdb.sql
}

init_test_set() {
    cd $BASEDIR && ./newset 'Initial Config'
}

run_tests() {
    cd $BASEDIR && ./runset
}

drop_testdb
create_testdb
init_results
init_test_set
run_tests

使用方式:

cd pgbench-tools
chmod +x pgbenchv2.sh
./pgbenchv2.sh

以上就是今天的分享,希望对大家有用,祝玩得开心~~

最后更新:2017-04-01 13:38:49

  上一篇:go OSS移动开发实战3 (30分钟快速搭建移动应用之安全策略)
  下一篇:go PostgreSQL · 特性介绍 · 全文搜索介绍