测试机器, 笔记本 win7 cpu i5-4210M 8G内存
测试数据 单表 181w数据
mybatis常用分页组件性能对比
1. RowBounds
2. PageHelper
3. 性能对比
|
数据
|
耗时
|
RowBounds
|
180w数据 pageSize=20
<p>50页到100页</p>
</td>
<td>
<p>4分钟</p>
</td>
</tr><tr><td>
<p>RowBounds</p>
</td>
<td>
<p>180w数据 pageSize=200</p>
<p>7000页到7020页</p>
</td>
<td>
<p>1分22秒</p>
</td>
</tr><tr><td>
<p>PageHelper</p>
</td>
<td>
<p>180w数据 pageSize=20</p>
<p>50页到100页</p>
</td>
<td>
<p>1962ms</p>
</td>
</tr><tr><td>
<p>PageHelper</p>
</td>
<td>
<p>180w数据 pageSize=200</p>
<p>7000页到7020页</p>
</td>
<td>
<p>12909ms</p>
</td>
</tr></tbody></table></div><p>jvm 内存消耗如下</p>
PageHelper
RowBounds
3. 原理分析
PageHelper: 物理分页, 通过拦截器加 limit 语句进行分页
RowBounds: 逻辑分页,数据量大的时候压力较大
总结:Mybatis的逻辑分页比较简单,简单来说就是取出所有满足条件的数据,然后舍弃掉前面offset条数据,然后再取剩下的数据的limit条
mybatis3 http://www.mybatis.org/mybatis-3/zh/index.html
pageHelper https://github.com/pagehelper/Mybatis-PageHelper
|