754
京東網上商城
PostgreSQL壓測工具之pgbench-tools使用指南
最近一直在思考,到底貢獻些什麼給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