最近一直在思考,到底贡献些什么给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
以上就是今天的分享,希望对大家有用,祝玩得开心~~