测试机器, 笔记本 win7 cpu i5-4210M 8G内存
测试数据 单表 181w数据
mybatis常用分页组件性能对比
1. RowBounds
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EaAJqv0T-1650585420109)(https://note.youdao.com/yws/res/536533/WEBRESOURCEd4a7664cd71eb04da86c91f72bc67c14)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rzzpvTDO-1650585420110)(https://note.youdao.com/yws/res/536535/WEBRESOURCEb26b5c458b4a3c6784133fac0835850c)]
2. PageHelper
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dcXDbTAS-1650585420110)(https://note.youdao.com/yws/res/536537/WEBRESOURCE9c132181252906f3b0e7c444804f8dfc)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m5bAObkJ-1650585420111)(https://note.youdao.com/yws/res/536541/WEBRESOURCEe219f0c83c517f5ddf45c352729c9615)]
3. 性能对比
数据
耗时
RowBounds
180w数据 pageSize=20
50页到100页
4分钟
RowBounds
180w数据 pageSize=200
7000页到7020页
1分22秒
PageHelper
180w数据 pageSize=20
50页到100页
1962ms
PageHelper
180w数据 pageSize=200
7000页到7020页
12909ms
jvm 内存消耗如下
PageHelper
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RIWMH6Kv-1650585420112)(https://note.youdao.com/yws/res/536561/WEBRESOURCEa3c8836edf1e21259f26c0be68a0caab)]
RowBounds
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5X92uZWE-1650585420112)(https://note.youdao.com/yws/res/536564/WEBRESOURCE0ded8361b3a2b7a2bf5485dc91ea84c0)]
3. 原理分析
PageHelper: 物理分页, 通过拦截器加 limit 语句进行分页
RowBounds: 逻辑分页,数据量大的时候压力较大
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7wwNOnuY-1650585420113)(https://note.youdao.com/yws/res/536568/WEBRESOURCE422988844b1fd4c42787706e9e378309)]
总结:Mybatis的逻辑分页比较简单,简单来说就是取出所有满足条件的数据,然后舍弃掉前面offset条数据,然后再取剩下的数据的limit条
mybatis3http://www.mybatis.org/mybatis-3/zh/index.html
pageHelperhttps://github.com/pagehelper/Mybatis-PageHelper
)