性能测试报告

测试目的

对Sharding-JDBC进行性能测试,客观、公正评估系统的性能,目的有三:

  • 对比Sharding-JDBC和JDBC的性能。
  • Sharding-JDBC是否通过扩展数据库解决JDBC吞吐量不足的问题。
  • Sharding-JDBC的稳定性。

测试数据库配置

数据库实例DB1DB2
操作系统centOS5.4centOS5.4
CPU2C四核2C四核
内存32GB32GB
硬盘250G2_RAID1+600G4_RAID10250G2_RAID1+600G4_RAID10
Mysql版本5.5.195.5.19
数据表字段数量7070
数据表行数1000万1000万

网络拓扑

网络拓扑图

单库情况下Sharding-JDBC与JDBC性能对比

测试结论:

  • 查询操作,Sharding-JDBC的TPS为JDBC的TPS的99.8%
  • 插入操作,Sharding-JDBC的TPS为JDBC的TPS的90.2%
  • 更新操作,Sharding-JDBC的TPS为JDBC的TPS的93.1%

查询

  • 横坐标:并发用户数
  • 纵坐标:TPS

插入

  • 横坐标:并发用户数
  • 纵坐标:TPS

更新

  • 横坐标:并发用户数
  • 纵坐标:TPS

Sharding-JDBC单库与双库性能对比

对比测试:

  • 单库用例中所有数据全部在DB1中
  • 双库用例中所有数据均匀分布在DB1与DB2中

结论:

  • 查询操作,TPS双库比单库可以增加大约94%的性能
  • 插入操作,TPS双库比单库可以增加大约60%的性能
  • 更新操作,TPS双库比单库可以增加大约89%的性能

查询

  • 横坐标:并发用户数
  • 纵坐标:TPS

插入

  • 横坐标:并发用户数
  • 纵坐标:TPS

更新

  • 横坐标:并发用户数
  • 纵坐标:TPS

Sharding-JDBC疲劳测试

经过8个小时的疲劳测试,jvm的堆大约占用不到600MB的内存,且使用量比较稳定。没有发生Full GC。