YCSB对MongoDB数据库性能测试
一、安装部署
1.1前置条件
Install Java and Maven
Go to http://www.oracle.com/technetwork/java/javase/downloads/index.html
并获取url以将rpm下载到服务器。例如:
wget http://download.oracle.com/otn-pub/java/jdk/7u40-b43/jdk-7u40-linux-x64.rpm?AuthParam=11232426132 -o jdk-7u40-linux-x64.rpm
rpm -Uvh jdk-7u40-linux-x64.rpm
或者通过yum/apt-get安装
sudo yum install java-devel
(包含JAVA可不用安装)
Download MVN from http://maven.apache.org/download.cgi
wget http://ftp.heanet.ie/mirrors/www.apache.org/dist/maven/maven-3/3.1.1/binaries/apache-maven-3.1.1-bin.tar.gz
sudo tar xzf apache-maven-*-bin.tar.gz -C /usr/local
cd /usr/local
sudo ln -s apache-maven-* maven
sudo vi /etc/profile.d/maven.sh
将以下内容添加到maven.sh
export M2_HOME=/usr/local/maven
export PATH=${M2_HOME}/bin:${PATH}
重新加载bash并测试mvn
bash
mvn -version
----或简约安装
sudo apt update
sudo apt install maven
备注:若不能执行需安装MongoDB
下载MongoDB并启动。例如,要启动MongoDB 在x86-64 Linux系统上:
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.24.tgz
tar -xfvz mongodb-linux-x86_64-*.tgz
mkdir /tmp/mongodb
cd mongodb-linux-x86_64-*
./bin/mongod --dbpath /tmp/mongodb
将上面的x.x.x替换为MongoDB的最新稳定发布版本。 请参阅http://docs.mongodb.org/manual/installation/ 了解各种操作系统的安装步骤。
1.2下载YCSB zip文件并编译
curl -O --location https://github.com/brianfrankcooper/YCSB/releases/download/0.17.0/ycsb-0.17.0.tar.gz
比较慢的话可从我的CSDN 0积分下载:https://download.csdn.net/download/weixin_39106116/88421659
tar -xfvz ycsb-0.17.0.tar.gz
cd ycsb-0.17.0 即可执行
或参考官网;
https://github.com/brianfrankcooper/YCSB/tree/master/mongodb?spm=a2c4g.11186623.0.0.6c347665QqdZjn
二、测试方法
2.1. 测试用例
使用ycsb自身配置文件workloada、workloadb、workloadc、workloadd、workloade、workloadf提供的各种操作场景。本文档使用workloada进行测试,后续将继续使用其他条件测试
l 测试命令参数说明
recordcount=1000 测试数据集的记录总数 operationcount=1000 测试过程执行的总数 workload=site.ycsb.workloads.CoreWorkload 默认(一般不用修改) readallfields=true 查询时是否读取记录的所有字段 readproportion=0.5 读操作百分比 updateproportion=0.5 更新操作百分比 scanproportion=0 扫描操作百分比 insertproportion=0 插入操作百分比 requestdistribution=zipfian 随机选择记录(存在热数据),uniform等概率选择记录、latest近期写入数据(热数据) |
l 账号密码
使用web页面创建的账号密码登录不是很顺利,可以进入容器环境,通过env | grep PASS找到root的对应密码
2.2. 测试执行
l 初始化load数据
ycsb load mongodb -s -P workloads/workloada -p table=test -threads 500 -p recordcount=100000000 -p mongodb.url=mongodb://root:nMmMDF2EsjYyTQWC@127.0.0.1:27017/admin?w=0 |
l 读写50:50
ycsb run mongodb -s -P workloads/workloada -p table=test -p recordcount=16000000 -p readproportion=0.5 -p updateproportion=0.5 -p operationcount=16000000 -threads 100 -p mongodb.url=mongodb://root:nMmMDF2EsjYyTQWC@127.0.0.1:27017/admin?w=0 |
l 读写95:5
ycsb run mongodb -s -P workloads/workloada -p table=test -p recordcount=16000000 -p readproportion=0.95 -p updateproportion=0.05 -p operationcount=16000000 -threads 100 -p mongodb.url=mongodb://root:nMmMDF2EsjYyTQWC@127.0.0.1:27017/admin?w=0 |