# rexdb-tester
**Repository Path**: rexsoft/rexdb-tester
## Basic Information
- **Project Name**: rexdb-tester
- **Description**: ORM框架性能测试程序,用于测试对比Rexdb、Hibernate、Mybatis、Spring JDBC的运行性能,也可以用于评估开发/生产系统的数据库查询、写入和批处理性能。
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 8
- **Forks**: 10
- **Created**: 2016-08-29
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README

----------
> **编译好的性能测试程序下载:[rexdb-tester-1.0.4.zip](http://dl.rex-soft.org/rexdb/rexdb-tester-1.0.4.zip) | [rexdb-tester-1.0.4.tar.gz](http://dl.rex-soft.org/rexdb/rexdb-tester-1.0.4.tar.gz)**
----------
> **目录**
- [简介](#user-content-intro)
- [如何使用](#user-content-how)
- [优化设置](#user-content-conf)
- [测试项目](#user-content-project)
- [测试流程](#user-content-flow)
----------
# 用户手册 - ORM框架性能测试程序 #
##
简介
##
本程序用于测试各ORM框架的运行性能,也可以用于开发/生产环境数据库性能评估。参与测试的框架包括:
- Rexdb
- Hibernate
- Mybatis
- Spring JDBC
- JDBC接口直接调用
测试项目有:
- 写入性能
- 批处理性能
- 查询性能
程序已经集成了各主流数据库的驱动,在修改数据库连接配置后,可以直接使用。已经集成的驱动有:
- oracle
- mysql
- SQL Server
- DB2
- postgresql
- derby
- h2
- hsqldb
- 金仓数据库
- 神通数据库
- 达梦数据库
各框架均使用了本程序发布时的最新正式版本,均使用了Apache dbcp连接池。程序运行结束后,将以文本形式在控制台展现各测试项目的“每秒操作次数”。在作者的台式机系统中的某次测试结果请参考:[http://db.rex-soft.org/performance.php](http://db.rex-soft.org/performance.php)。
## 如何使用
##
本程序已经集成了大部分数据库驱动和运行所需的Jar包,修改配置后,直接运行启动脚本文件即可。使用步骤如下:
1. 确保系统已经安装了JDK 6.0及以上版本
2. 修改conf/conn.properties,启用相应的数据库连接
3. 运行bin/run.bat(Windows系统),或者bin/run.sh(Linux系统),耐心等待执行完成
```bash
run.bat #Windows
./run.sh #Linux
```
## 优化设置
##
在执行测试时,程序会反复执行重复同一操作,直到运行完毕后计算平均耗时。理论上,重复执行的次数越多,结果越准确,但耗时也越长。在run.bat/run.sh脚本中,实际执行了如下命令:
```
java -classpath ../conf -Djava.ext.dirs=../lib org.rex.db.test.RunAllTests speed=10 loop=30
```
您可以自行编辑该文件,修改以下的两项参数,以获取速度和误差之间的平衡:
- speed:执行速度,默认是10。值越大,每次测试中使用的数据量越小,误差越大
- loop:循环次数,默认是30。值越大,每个测试项目的循环次数越多,误差越小
## 测试项目
##
本程序分别测试了各框架如下操作的性能:
- 写入性能
- 批处理性能
- 查询性能
在每项测试执行前,为防止各框架首次运行时的初始化操作影响测试结果,因此程序会首先运行若干次测试项目,不计入测试耗时。
在执行测试时,同一测试项目可能会应用不同的设置,并多次运行。例如,在测试写入性能时,程序分别测试了Java对象和org.rex.db.Ps对象做为参数时的性能;测试查询性能时,又分别测试了查询Java对象和查询Map的性能,查询Java对象时还分别测试了启用和禁用动态字节码时的性能。
## 测试流程
##
本程序的测试流程如下:
1. 连接数据库,创建测试需要的表(部分数据库还会创建存储过程)
2. 测试Rexdb的各接口是否可用(部分数据库会测试调用接口)
3. 测试各框架是否可用
4. 执行性能测试
5. 输出结果