es、MySQL 深度分页问题

news2024/11/24 16:28:30

文章目录

    • es 深度分页
    • MySQL 深度分页

es 深度分页

es 深度分页问题,有点忘记了,这里记录一下

当索引库中有10w条数据,比如是商品数据;用户就是要查在1w到后10条数据,怎么查询。

  • es查询是从各个分片中取出前1w到后10条数据,然后进行数据汇总,在对汇总的数据进行排序后,取出1w到后10条数据
  • 这个汇总后的数据排序是在 heap内存中进行的,如果数据量过大的话,可能会导致OOM
  • 频繁的深度分页查询,会导致频繁的FGC,导致服务卡顿
    1

但是嘿,我就是查怎么办?

  • 默认es指定分页深度 max_result_window 是10000条,超过这个数据量默认是不允许查询的。

方法一: 修改该索引的,分页深度;比如修改为 10w条

  • 有风险,容易溢出、或效率低下
## 修改分页深度
PUT goods/_settings
{
  "max_result_window":100000
}
# 查数据
GET goods/_search
{
  "from" : 10000 , "size" : 10
}

2

方法二:滚动查询一部分数据一部分的查,无需修改分页深度

  • scroll 查询是可以避免在处理大量数据时,将所有结果一次性加载到内存中所带来的内存压力。通过使用scroll,只有当前批次的结果需要被加载到内存中,而不是整个结果.
  • 第一次scroll 会将结果保存快照,存活时间 1m(分钟)
  • 在第二次滚动,会根据当前scroll_id定位到快照,查询下一批次的结果,然后的在程序里取出 1w~10009
  • 但是 scroll查询会占用Elasticsearch的资源,因为它需要维护结果集的快照Scrolls,默认 滚动次数限制在 500
GET goods/_search?scroll=1m
{
  "size" : 10000
}

POST /_search/scroll 
{
    "scroll" : "1m", 
    "scroll_id" : "${上次查询的滚动id}" 
}

3

方法3:search_after 排序唯一,根据上次返回排序数组值,当做 search_after请求参数

  • 使用search_after参数将第一次查询结果中最后一个文档的排序值作为起
  • es根据这个排序值,找到下一页的文档,并将最后一个文档的排序值记录下来
  • 不支持向前搜索,只能向后执行
  • 每次只能向后搜索1页数据
GET goods/_search
{
  "sort": [
    {
      "price": {
        "order": "asc"
      }
    }
  ],
  "from" : 9990 , "size" : 10
}


GET goos_index/_search 
{
  "sort": [
    {
      "price": {
        "order": "asc"
      }
    }
  ],
  "search_after": [
    9999.0
  ]
}

4

MySQL 深度分页

2000w条记录的表,需要查询第100w、1000w以及后10条数据

-- 取1000w行数据
select * from person order by p.create_time desc limit 10000000,100

select * 查询时,如果以 创建时间建一个索引,idx_create_time ,因为没有覆盖索引,所以需要回表,要回表1000w次

  • 所以查询很慢,我们需要避免回表。
  • 借鉴一下图 ↓在这里插入图片描述

先用 覆盖索引的子查询,缩短查询时间范围

select p.* from person p
where p.create_time <= (select create_time from person t order by t.create_time desc limit 10000000,1)
order by p.create_time desc limit 10

悲催的面试 /(ㄒoㄒ)/~~

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1327809.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

redis 从0到1完整学习 (五):集合 IntSet 数据结构

文章目录 1. 引言2. redis 源码下载3. IntSet 数据结构4. 参考 1. 引言 前情提要&#xff1a; 《redis 从0到1完整学习 &#xff08;一&#xff09;&#xff1a;安装&初识 redis》 《redis 从0到1完整学习 &#xff08;二&#xff09;&#xff1a;redis 常用命令》 《redi…

JavaOOP篇----第十篇

系列文章目录 文章目录 系列文章目录前言一、构造方法能不能显式调用?二、什么是方法重载?三、构造方法能不能重写?能不能重载?四、内部类与静态内部类的区别?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,…

Springboot启动异常 OgnlException: sqlSelect [java.lang.NoSuchMethodError

完整的日志如下&#xff1a; Invocation of init method failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: Error evaluating expression ew ! null and ew.sqlSelect ! null. Cause…

协作机器人(Collaborative-Robot)安全碰撞的速度与接触力

协作机器人&#xff08;Collaborative-Robot&#xff09;的安全碰撞速度和接触力是一个非常重要的安全指标。在设计和使用协作机器人时&#xff0c;必须确保其与人类或其他物体的碰撞不会对人员造成伤害。 对于协作机器人的安全碰撞速度&#xff0c;一般会设定一个上限值&…

Excel排序怎么做?记好这些正确操作!

“我是个职场新手&#xff0c;对excel的使用还不是很熟悉。但是我需要处理一份文件。有朋友可以简单介绍一下excel排序的操作方法吗&#xff1f;” Excel作为一个实用的办公工具&#xff0c;给用户带来了很多的方便。在使用excel时&#xff0c;排序功能是比较重要且常用的。我们…

轴承故障诊断分类模型全家桶-最全教程

Python轴承故障诊断 (一)短时傅里叶变换STFT-CSDN博客 Python轴承故障诊断 (二)连续小波变换CWT-CSDN博客 Python轴承故障诊断 (三)经验模态分解EMD-CSDN博客 Pytorch-LSTM轴承故障一维信号分类(一)-CSDN博客 Pytorch-CNN轴承故障一维信号分类(二)-CSDN博客 Pytorch-Trans…

打造明厨亮灶工程,需要哪些AI视频智能算法助力?

旭帆科技AI智能监控可以通过摄像头、传感器和数据处理等技术手段&#xff0c;实时监测厨房人员着装、行为与烟火等&#xff0c;对厨房实时监控进行分析与记录&#xff0c;从而实现明厨亮灶场景的搭建&#xff0c;保障食品安全和服务质量。 1、烟火识别 对于后厨来说&#xff0…

搭建动态网站之——基于Redhat8.6搭建Discuz论坛

目录 一、动态网站与静态网站区别 1、提供用户互动接口的动态网站 2、搭建动态网站的需求&#xff1a; 二、搭建步骤 第一步&#xff1a;www服务器配置 第二步;编辑网页文件 第三步&#xff1a;使用xftp 将Discuz包传到/discuz解压 1、将Discuz包移动到/discuz 2、解压…

双燃料发动机,预计2025年市场规模将达到39亿美元

双燃料发动机是一种可以使用两种不同类型的燃料&#xff08;通常是天然气和柴油&#xff09;运行的发动机&#xff0c;具有更大的灵活性和更低的排放。近年来&#xff0c;在对更清洁、更高效能源的需求不断增长的推动下&#xff0c;双燃料发动机市场增长迅速。 全球市场&#x…

End-to-End Object Detection with Transformers(2020)

文章目录 AbstractIntroductionThe DETR modelObject detection set prediction loss二元匹配匈牙利损失如下Bounding box loss DETR architecture Conclusion hh 源代码 Abstract 我们提出了一种将目标检测视为直接集预测问题的新方法。我们的方法简化了检测管道&#xff0c;…

VUE中的index.html、App.vue和main.js的关系

VUE中的index.html、App.vue和main.js的关系&#xff0c;个人理解。 javascriptCopy code import Vue from vue; import App from ./App.vue;new Vue({render: h > h(App), }).$mount(#app);

【工具与中间件】通过飞书应用操作云文档

文章目录 前言1. 准备工作1.1 创建应用1.2 创建文件夹 2. 测试租户/个人版实践2.1 权限配置2.2 控制台调试2.3 协作文档添加应用2.4 CRUD2.4.1 根据文档描述选择token并生成2.4.2 新增多维表格数据API2.4.3 删除多维表格数据API2.4.4 查询多维表格数据API2.4.5 修改多维表格数据…

CentOS7 安装 DockerCompose

目录 一、安装Docker 二、安装步骤 2.1 卸载 2.2 安装docker 2.3 启动docker 2.4 配置镜像加速器 一、安装Docker Docker 分为 CE 和 EE 两大版本。 CE 即社区版(免费&#xff0c;支持周期7个月)EE 即企业版强调安全&#xff0c;付费使用&#xff0c;支持周期 24 个月…

java连接PRINTRONIX T8000打印机打印标签及常见打印错误说明

需要注意的点&#xff1a;数据拼接时一定要在数据两边加上双引号&#xff0c;否则打印出来的东西会报错&#xff01;&#xff01;&#xff01; package com.tscsdk;import java.io.IOException; import java.net.Socket; import java.text.SimpleDateFormat; import java.util…

速度超快的单图像生成3D目标方案,创新的One-2-3-45++来了!

论文链接&#xff1a; https://arxiv.org/pdf/2311.07885 github链接&#xff1a; https://sudo-ai-3d.github.io/One2345plus_page/ Demo链接&#xff1a; https://www.sudo.ai/3dgen 最近在开放世界的3D目标生成方面取得了显著的进展&#xff0c;图像到3D的方法&#xff0c…

Datawhale聪明办法学Python(task6字符串)及作业题解版

一、课程基本结构 课程开源地址&#xff1a; 课程进度列表 - 聪明办法学 Python 第二版 章节结构&#xff1a; Chapter 0 安装 InstallationChapter 1 启航 Getting StartedChapter 2 数据类型和操作 Data Types and OperatorsChapter 3 变量与函数 Variables and Functions…

在雷电模拟器中安装apk包使用charles抓包详细教程

背景 由于手头没有多余的平板&#xff0c;所以用模拟器来安装应用进行测试&#xff0c;有时候想要知道是前端问题还是后端问题&#xff0c;需要安装charles来进行抓包&#xff1b; 最终效果 模拟器上浏览应用&#xff0c;能抓到应用数据&#xff1b; 具体步骤 模拟器开启ro…

达梦兼容MySQL问题

问题 客户开发商 反馈 两台达梦数据库 执行相同SQL&#xff0c; 100.90.34.131上的 SQL语法 不支持。反馈是版本低导致的 分析 版本 100.90.34.131 10.74.28.22 发现 两个数据库大版本 一致&#xff0c;排除 版本原因。 开发环境 开发商 使用 10.74.28.22 的达梦。使用的是 …

MySQL增删改查(增加)

White graces&#xff1a;个人主页 &#x1f649;专栏推荐:Java入门知识&#x1f649; &#x1f649; 内容推荐:MySQL数据库和表操作&#x1f649; &#x1f439;今日诗词:父兵诛卓起长沙,直取江东作帝家&#x1f439; ⛳️点赞 ☀️收藏⭐️关注&#x1f4ac;卑微小博主&…

基于Java SSM框架实现咖啡馆管理系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架实现咖啡馆管理系统演示 摘要 2021是网络科技的时代 &#xff0c;众多的软件被开发出来&#xff0c;给客户带来了很大的选择余地&#xff0c;而且客户越来越追求更个性的需求。在这种时代背景下&#xff0c;客户对咖啡馆管理系统越来越重视&#xff0c;使更好…