本周review的文章是:https://medium.com/@hakibenita/optimizing-django-admin-paginator-53c4eb6bfca3
改篇文章的题目是:Optimizing Django Admin Paginator,How we finally made Django admin fast for large tables。
django分页的时候,大部分时间都会消耗在求count上,本篇文章提到了几点用于提升大表分页的方法:
1、重写默认的分页实现
2、在计算count的时候,直接写一个比较大的假的记录总数
3、在计算count的时候,如果查询时间大于阈值,设置一个假的count
4、可以先explain一下django 的queryset的执行计划,提前避免过大的查询
5、缓存count
这篇文章虽然是针对django的,但是提供了一些很好的思路,在java开发中,如果使用了第三方的mybatis分页插件,很大概率,在计算记录count的时候,是不走索引的。很多框架在计算count的时候,只是使用count(sql)。
这个时候,我们自己去计算这个count,而不是使用默认的分页。第三条其实也非常常用,可以使用spring的事务的timeout注解,也可以使用hystrix的超时机智去控制。第四条提供了一个新的思路,在执行一个sql之前,可以让程序去explain下mysql的执行计划,如果说可能的查询会非常慢的话,能提前知晓,去做替代方案。总之这个文章虽然是讲django的,但是提供了一些非常独特的意见。
原文地址:https://www.cnblogs.com/dongqiSilent/p/10779747.html
时间: 2024-11-06 07:18:24