查看测试结论



查询性能

查询性能取决于多方面因素,包括软硬件环境、需要读取的字段数量、映射对象类型、是否启用了优化选项等,以下按照查询结果的类型分别进行测试。

查询为对象

查询为对象时,Rexdb全局配置中的“动态字节码”选项对性能影响显著,禁用后会降低查询性能。

查询为Map

与查询为对象相比,查询为Map会有更多的性能损耗。但这类接口适合处理复杂的结果集,可以在程序中适度使用。

更新性能

数据库的插入、修改、删除,以及执行DLL语句均属于更新操作。以下以插入为例,分别以Java对象和org.rex.db.Ps对象作为参数,进行性能测试。

使用Java对象作参数

使用Java对象作参数会有轻微的性能损耗,“动态字节码”选项也不能带来显著的性能提升。

使用Ps对象作参数

Ps对象和Java对象作参数的性能接近,均有轻微的性能损耗。除此之外,Map和数组做参数时的性能均类似。

批量更新性能

与逐条更新相比,批量接口可以获得大幅的性能提升。通常可以使用以下几种方式实现批量更新:

  • 启用事物,并在同一个事物中提交多个操作;

  • 使用字符串拼接一个较长的SQL,一次提交所有的预编译参数;

  • 调用JDBC的批量更新接口;

Rexdb批量更新类接口使用了第3种方式,但同时也支持其它批量更新方式。

需要注意的是,在某些数据库驱动中,可能需要开启相关选项才能真正实现基于JDBC的批量更新操作。 例如,Mysql的JDBC驱动默认关闭了批量接口,需要在驱动连接字符串中设置“rewriteBatchedStatements=true”开启。