背景:最近公司技术交流有的同事提出ResultSet分页的观点(如果您不知道如何使用ResultSet分页,请自行google),我一直使用数据库分页,之前没有接触过ResultSet分页的概念,不知道他是属于内存逻辑分页还是数据库分页,所以自己做了个小测试
测试机器硬件:
测试数据:(其中只使用了 collect_id,data_time 两个字段)
数据量:单表300W
数据库:Mariadb-5.5.25-win32
1、内存
①ResultSet 查询
执行ResultSet查询前:Java.exe(tomcat 进程)占用内存 630748K
执行ResultSet查询后:Java.exe(tomcat 进程)占用内存 1025224K
②NutzDao 查询
执行NutzDao查询前:Java.exe(tomcat 进程)占用内存 623212K执行NutzDao查询后:Java.exe(tomcat 进程)占用内存 625608K
2、执行时间
①执行ResultSet 查询使用时间
ResultSet 分页用时:[19462] 毫秒,总记录数:[3000000] 条
②行NutzDao 查询使用时间
Nutz Dao 数据库分页用时:[12] 毫秒,总记录数:[3000000] 条
总结:①
内存占用 ResultSet 查询约为 NutzDao 查询的 (1025224-630748)/(625608-623212)~=160倍②查询耗时 ResultSet 查询约为 NutzDao 查询的 19462/(12)~=1600倍
当然影响测试数据因素有很多,但是至少这个数据应该可以说明一些问题,仅供参考