mybatis 分页 RowBounds和PageHelper性能评测

测试机器, 笔记本 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

原文地址:https://www.cnblogs.com/ZhangZiYangDeBoKe/p/11277203.html