Java相关八股学习记录1
深分页如何优化?
导致性能瓶颈原因:
MySQL 使用 limit offset, size 做深分页时(如 limit 100000, 20),会先扫描并丢弃前 100000 条数据,只取最后 20 条,数据量越大、offset 越大,性能越差,IO 和 CPU 都会被打爆。
解决:
1. 优化优先用主键 ID 范围查询,记录上一页最后一条 ID,直接 where id > 上一页最后一条id 避免深分页,充分利用聚簇索引;(缺点:不适合跳多页,适合上下页切换)
2. 如果需要实现跳页可以用延迟关联,先用子查询查主键再关联回表;
3. 合理使用覆盖索引避免回表;
4. 超大数据量直接用 ElasticSearch 替代 MySQL 做分页。
#发面经攒人品#
导致性能瓶颈原因:
MySQL 使用 limit offset, size 做深分页时(如 limit 100000, 20),会先扫描并丢弃前 100000 条数据,只取最后 20 条,数据量越大、offset 越大,性能越差,IO 和 CPU 都会被打爆。
解决:
1. 优化优先用主键 ID 范围查询,记录上一页最后一条 ID,直接 where id > 上一页最后一条id 避免深分页,充分利用聚簇索引;(缺点:不适合跳多页,适合上下页切换)
2. 如果需要实现跳页可以用延迟关联,先用子查询查主键再关联回表;
3. 合理使用覆盖索引避免回表;
4. 超大数据量直接用 ElasticSearch 替代 MySQL 做分页。
#发面经攒人品#
全部评论
相关推荐
04-29 10:18
重庆邮电大学 Java 点赞 评论 收藏
分享
查看7道真题和解析 点赞 评论 收藏
分享