首页 > 编程语言 >python:海量数据集分页优化

python:海量数据集分页优化

时间:2023-01-12 12:09:37浏览次数:39  
标签:Paginator 分页 python Django 海量 mysql 数据 log


学过Django框架的同学,一定都使用过Django框架的Paginator分页功能,今天我们要讨论的是关于使用Paginator进行大数据集分页时,它性能的优化问题。

Paginator分页

下面步入正题,首先我们来看一个Django中使用Paginator进行分页的例子:

1)首先我创建了一个Django项目并定义了一个User用户模型类

 

python:海量数据集分页优化_大数据

 

2)执行迁移在数据库中生成tb_users用户表并添加800万个测试用户数据

 

python:海量数据集分页优化_python_02

 

3)编写使用Paginator类进行分页的测试代码,并测试获取相应页的数据

 

python:海量数据集分页优化_python_03

 

4)分页测试代码执行完成之后,我们来看终端输出的内容

 

python:海量数据集分页优化_mysql_04

 

5)对于上面的分页测试结果,我们再来看一下mysql的日志记录数据

 

python:海量数据集分页优化_java_05

 

注:mysql的日志文件在/var/log/mysql/mysql.log,测试之前可以先使用tail -f /var/log/mysql/mysql.log打开这个文件,测试之后就可以看到对应输出的日志信息

6)看完上面的内容之后,接下来我们就可以看Django框架关于Paginator类分页的官网文档了

 

python:海量数据集分页优化_python_06

 

上面红色框框里的提示就是告诉我们,在使用Paginator对大数据量的QuerySet进行分页时,如果请求页码较大的某页数据时,查询效率可能会很慢,因为Limit/Offset分页时,先要根据Offset偏移量从前向后扫描数据

分页问题解决

好,说了这么多,最后的问题要来了,怎么解决这个问题呢?下面咱们来说一个很多大厂使用的解决方案,什么方案呢,会不会很高大上呢?

其实很简单,就是限制用户请求的最大页数,比如只允许用户访问前100页的数据,如果请求的页码超过100页,可以默认返回第1页的数据,这样就不会有上面的问题,是不是很简单呢。这个思想也很简单,大家平时搜索内容或购买商品时,是不是只会浏览前几页的内容呢?不用我回答,你应该已经有了答案

小知识:百度搜索内容显示时,只允许用户访问前76页的内容;淘宝搜索上面商品显示时,只允许用户访问前100页的内容。

最后,怎么知道这个解决方案的?其实还是在文档,大家请看

 

python:海量数据集分页优化_大数据_07

 

建议大家平时自己多看文档,授人以鱼不如授人以渔,假以时日,这就是你的渔

好啦,关于大数据集分页的问题,咱们今天就说到这,有没有其它方案呢?大家可以多去探索

标签:Paginator,分页,python,Django,海量,mysql,数据,log
From: https://blog.51cto.com/u_8238263/6003933

相关文章

  • python:栈的理解与应用
    如何理解“栈”?关于“栈”,我有一个非常贴切的例子,就是一摞叠在一起的盘子。我们平时放盘子的时候,都是从下往上一个一个放;取的时候,我们也是从上往下一个一个地依次取,不能从中......
  • Python:类
    太久没写Python的程序了类的内容忘记了,这里写下回忆一下1Python-类属性类有一个特殊的方法叫做构造函数,用作定义实例对象的属性,其必须被命名为__innit__()(注意其前后......
  • SqlServer 几种分页方式
    top方式selecttop5*fromStudentwhereId>(selectmax(Id)from(selectTop10IdfromStudentorderbyId)asb)orderbyId--或使用notinselectt......
  • Python-wxauto自动发送消息或文件
    1、安装wxauto和pyautogui库,pip安装即可。pipinstallwxautopipinstallpyautogui2、登录微信 3、编写代码importtimefromwxautoimportWeChatimportpya......
  • 用python虚拟环境安装jupyter notebook
    一、安装python虚拟环境以及在虚拟环境中安装jupyter1、创建python虚拟环境,命名为py_venv-onepython-m-venvpy_venv-one2、进入并激活虚拟环境进入Scripts文件夹ac......
  • Python 包离线使用
    导出本地依赖的所有包,并下载到packages目录下piplistpipfreeze>requirements.txtpipdownload-dpackages-rrequirements.txt将packages文件夹和requireme......
  • python--操作excel表格,openpyxl模块
    简介openpyxl是一个非常强大的读写Excel2010xlsx/xlsm/xltx/xltm的Python库,简单易用,功能广泛,单元格格式/图片/表格/公式/筛选/批注/文件保护等等功能应有尽有官方......
  • python false和False
    true=Falsedefwazzup():"""假亦真时真亦假"""false=TrueorFalsedeftrue():nonlocalfals......
  • 全面了解Python的变量与基本数据类型
    (全面了解Python的变量与基本数据类型)1保留字和标识符1.1保留字保留字是Python语言中已经被赋予了特定意义的单词,写代码或开发过程中不能使用这些单词作为用户的变......
  • ubuntu下配置django+apache+mysql+mod_python+Python
    网上有N种安装方法,我都试过,没有一个最后能成功,浪费了一下午的时间,终于搞定,1.installPython最新的Ubuntu操作系统是含有Python的,可以通过Python--version查看的:lab@lab:~......