ycsb使用

1.是什麼
YCSB(Yahoo! Cloud Serving Benchmark),是雅虎開源的一款通用的性能測試框架。

2.可以做什麼
可以測試數據庫,或者支持數據庫操作的產品性能。
內嵌了一些數據庫產品和測試,並支持自定義數據庫的測試,測試結果是吞吐量和延遲,可以瞭解數據庫性能。

3.ycsb執行的原理
ycsb的目錄:
bin目錄:
目錄下有個可執行的ycsb文件,是個python腳本,是用戶操作的命令行接口。ycsb主邏輯是:解析命令行、設置java環境,加載java-libs,封裝成可以執行的java命令,並執行編譯好的jar包;
workloads:
工作負載

4.ycsb的使用
以支持自定義數據庫爲例說明。
(1)前提:
fs_rw_sdk:一個java sdk,業務通過sdk操作fs。
(2)準備:
使用ycsb,需要實現ycsb的com.yahoo.ycsb.DB的insert和read接口,模擬數據庫的讀寫操作。
具體接口說明:init/insert/read/接口說明
(3)把依賴的sdk配置到pom裏,mvn package編譯生成可以執行的jar包
(4)通過腳本拼接成命令,執行(3)編譯生成的jar包
腳本作用和ycsb目錄下的ycsb.sh的相同

#!/bin/sh

if [ $# -lt 1 ]; then
  echo "Usage: $0 [shell|load|run] ..."
  exit -1
fi

cur_dir=`dirname $0`
cur_dir=`cd $cur_dir && pwd`

case $1 in
  (shell)
    main_class=com.yahoo.ycsb.CommandLine
    option=""
    ;;
  (load)
    main_class=com.yahoo.ycsb.Client
    option="-load"
    ;;
  (run)
    main_class=com.yahoo.ycsb.Client
    option="-t"
    ;;
  (*)
    echo "Invalid command: $1"
    exit -2
    ;;
  esac

extra_args=`echo $@ | awk '{for(i=2; i<=NF; i++) printf("%s ",$i)}'`
class_path=$cur_dir/../target/fs-test-1.0-SNAPSHOT.jar

# 這些是編譯時依賴的jar包
for jar in $cur_dir/../target/lib/*.jar; do
  class_path=$class_path:$jar
  echo $class_path
done

java -cp $class_path  $main_class $option \
  -db com.will.fs.FSClient  \
  $extra_args

5.ycsb執行和結果查看
load:準備數據,insert操作
run:讀取數據,read操作
結果查看:https://www.cnblogs.com/bonelee/p/6282795.html

Reference:
[1] https://www.cnblogs.com/bonelee/p/6282798.html
[2] https://segmentfault.com/a/1190000007427156
[3] https://www.jianshu.com/p/73d22befe47d

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章