閱讀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 · 特性介紹 · 全文搜索介紹