当前位置: 首页 > news >正文

MySQL按序批量操作大量数据

MySQL按序批量操作大量数据(Java、springboot、mybatisplus、ElasticSearch)

以同步全量MySQL数据到ElasticSearch为例。

核心代码

业务逻辑:

 public boolean syncToElasticsearch() {log.info("Starting data synchronization to Elasticsearch.");// 获取最大id和最小idIdRange idRange = newsMapper.getIdRange();log.info("idRange is:{}", JSON.toJSONString(idRange));if (idRange == null || idRange.getMinId() <= 0 || idRange.getMaxId() <= 0) {log.warn("Invalid id range or no data found in MySQL. Sync process aborted.");return false;}long pageSize = 200L;long startId = idRange.getMinId();try {// 循环处理所有数据while (startId <= idRange.getMaxId()) {// 业务逻辑 可以替换成自己需要的log.info("syncToElasticsearch startId:{}", startId);List<News> newsList = newsService.getByIdRange(startId, pageSize);log.info("syncToElasticsearch newsList size:{}", newsList.size());if (CollectionUtils.isEmpty(newsList)) {break;}newsEsService.bulkUpsertToElasticsearch(getNewsEsDTOList(newsList));// 更新startIdstartId = newsList.get(newsList.size() - 1).getId() + 1;log.info("Synced {} Newss to Elasticsearch, current id is:{}", newsList.size(), startId);}} catch (Exception e) {log.error("Error occurred during News data synchronization to Elasticsearch.", e);return false;}log.info("Data synchronization to Elasticsearch completed.");return true;}

mapper:

public interface NewsMapper extends BaseMapper<News> {/*** 获取最小和最大id值的范围** @return*/@Select("SELECT MIN(id) AS minId, MAX(id) AS maxId FROM news")IdRange getIdRange();
}

newsService:

    public List<News> getByIdRange(long startId, long pageSize) {if (startId <= 0 || pageSize <= 0) {return Collections.emptyList();}return this.list(new LambdaQueryWrapper<News>().ge(News::getId, startId).orderByAsc(News::getId).last("limit " + pageSize));}

实体类定义:

@Data
public class IdRange {private Long minId;private Long maxId;
}

为什么不直接用分页?

页面深度越大查询性能越慢,当表有大量数据时处理后面的数据会很耗时。

相关文章:

MySQL按序批量操作大量数据

MySQL按序批量操作大量数据&#xff08;Java、springboot、mybatisplus、ElasticSearch&#xff09; 以同步全量MySQL数据到ElasticSearch为例。 核心代码 业务逻辑&#xff1a; public boolean syncToElasticsearch() {log.info("Starting data synchronization to El…...

strict-origin-when-cross-origin

严格限制同源策略 &#xff08;1&#xff09;允许服务器的同源IP地址访问 &#xff08;2&#xff09;允许Referer --- 后端服务器要配置...

【置顶】 本博博文汇总

文章目录 前言音视频ijkplayer源码分析FFmpeg、音视频协议Andriod系统音视频框架C、C Android&Java源码分析、绘制、渲染Dalvik、Art虚拟机Java并发 计算机基础操作系统计算机网络设计模式、数据结构、算法 前言 23年底了&#xff0c;想来也工作十年&#xff0c;也一直在c…...

react.js源码二

三、调度Scheduler scheduling(调度)是fiber reconciliation的一个过程,主要决定应该在何时做什么?在stack reconciler中,reconciliation是“一气呵成”,对于函数来说,这没什么问题,因为我们只想要函数的运行结果,但对于UI来说还需要考虑以下问题: 并不是所有的state更…...

如何学习英语

前言 首先写一些自己的感言吧&#xff0c;其实从大学的时候就在不断地听英语&#xff0c;学英语&#xff0c;但是到毕业十几年后&#xff0c;英语一直没起到什么作用&#xff0c;当然最有作用的时候就是几次英语面试吧。 工作之后有一段学习英语的经历&#xff0c;当时花费了…...

robot测试自动化

一. 安装 黑羽robot 首先确保你电脑上安装好了 Python 3.7 或者 3.8 版本的解释器 hyrobot 使用说明1 | 白月黑羽 安装RF 黑羽robot基于Robot Framework &#xff0c;所以必须先安装RobotFramework 直接执行如下Pip命令即可&#xff1a; pip install robotframework...

Linux---重定向命令

1. 重定向命令的介绍 重定向也称为输出重定向&#xff0c;把在终端执行命令的结果保存到目标文件。 2. 重定向命令的使用 命令说明>如果文件存在会覆盖原有文件内容&#xff0c;相当于文件操作中的‘w’模式>>如果文件存在会追加写入文件末尾&#xff0c;相当于文件…...

小区生活污水处理需要哪些设备和工艺

在小区生活中&#xff0c;污水处理是一个非常重要的环节&#xff0c;它关乎到环境的保护和居民的生活质量。因此&#xff0c;了解小区生活污水处理所需要的设备和工艺是至关重要的。 首先&#xff0c;在小区生活污水处理中&#xff0c;需要用到的设备包括污水收集系统、初级沉淀…...

【高性能计算】Cpp + Eigen + Intel MKL + 函数写成传引用

CUDA加速原理:CUDA编程学习:自定义Pytorch+cpp/cuda extension 高质量C++进阶[2]:如何让线性代数加速1000倍? 【gcc, cmake, eigen, opencv,ubuntu】三.eigen和mkl安装和使用 Linux下MKL库的安装部署与使用,并利用cmake编译器调用MKL库去提升eigen库的计算速度 Eigen库…...

【教学类-05-02】20231216 (比大小> <=)X-Y之间的比大小88题(补全88格子,有空格分割提示)

作品展示&#xff1a; 背景需求&#xff1a; 1、以前做过一份比大小的题目 【教学类-05-01】20211018 Python VSC 大班 数字比大小&#xff08;&#xff1e; &#xff1c;&#xff09;_vsc比较3位数大小-CSDN博客文章浏览阅读674次。【教学类-05-01】20211018 Python VSC 大班…...

【Spark精讲】Spark与MapReduce对比

目录 对比总结 MapReduce流程 ​编辑 MapTask流程 ReduceTask流程 MapReduce原理 阶段划分 Map shuffle Partition Collector Sort Spill Merge Reduce shuffle Copy Merge Sort 对比总结 Map端读取文件&#xff1a;都是需要通过split概念来进行逻辑切片&…...

SQL错题集3

1.薪水第二多的员工的emp_no以及其对应的薪水salary limit a,b 其中a表示查询数据的起始位置&#xff0c;b表示返回的数量。 &#xff08;MySQL数据库中的记录是从0开始的&#xff09; 注意从0开始 2.员工编号emp_no为10001其自入职以来的薪水salary涨幅值growth 聚合函数不能…...

Elasticsearch:使用 OpenAI 生成嵌入并进行向量搜索 - nodejs

在我之前的文章&#xff1a; Elasticsearch&#xff1a;使用 Open AI 和 Langchain 的 RAG - Retrieval Augmented Generation &#xff08;一&#xff09;&#xff08;二&#xff09;&#xff08;三&#xff09;&#xff08;四&#xff09;​​​​​ 我详细地描述了如何使用…...

[python高级编程]:02-类

此系列主要用于记录Python学习过程中查阅的优秀文章&#xff0c;均为索引方式。其中内容只针对本作者一人&#xff0c;作者熟悉了解的内容不再重复记录。 目录 01-装饰器 overload -- 方法重载 02-多态 多态和鸭子类型 03-设计模式 抽象基类和接口 01-装饰器 overload -- 方…...

java.lang.UnsupportedOperationException异常解决

在执行如下代码时&#xff0c;发现当apps.add("...");代码执行时&#xff0c;会报java.lang.UnsupportedOperationException错误 List<String> apps Arrays.asList("...");apps.add("..."); 问题出现的原因如下&#xff1a; 1、ArrayLi…...

openmediavault debian linux安装配置企业私有网盘(三 )——raid5与btrfs文件系统无损原数据扩容

一、适用环境 1、企业自有物理专业服务器&#xff0c;一些敏感数据不外流时&#xff0c;使用openmediavault自建NAS系统&#xff1b; 2、在虚拟化环境中自建NAS系统&#xff0c;用于内网办公&#xff0c;或出差外网办公时&#xff0c;企业内的文件共享&#xff1b; 3、虚拟化环…...

Two Phase Termination(两阶段)设计模式

Two Phase Termination设计模式是针对任务由两个环节组成&#xff0c;第一个环节是处理业务相关的内容&#xff0c;第二个阶段是处理任务结束时的同步、释放资源等操作。在进行两阶段终结的时候&#xff0c;需要考虑&#xff1a; 第二阶段终止操作必须保证线程安全。 要百分百…...

闲人闲谈PS之四十九——PLM和SAP集成常见的问题

惯例闲话&#xff1a;天气突变&#xff0c;没想到珠三角也骤降了10几度&#xff0c;昨晚还吹风扇模式&#xff0c;早上起来一下子感觉丝丝凉意。闲人还是喜欢冬天&#xff0c;冷&#xff0c;能让人思维清晰&#xff0c;提高工作效率。趁着天气适宜&#xff0c;赶紧加班擦屁股去…...

帆软BI目录

数据导入ORACLE库 写法 SELECT * FROM (SELECT a.id ,a.expandType,a.parentId,a.displayName,a.sortIndex,LEVEL lv ,replace(sys_connect_by_path(displayName,//),//Dec-Entry_Management//,) AS 路径FROM FINE_AUTHORITY_OBJECT aSTART WITH a.id decision-directory-ro…...

(第8天)保姆级 PL/SQL Developer 安装与配置

PL/SQL Developer 安装与配置(第8天) 咱们前面分享了很多 Oracle 数据库的安装,但是还没有正式使用过 Oracle 数据库,怎么连接 Oracle 数据库?今天就来讲讲我学习中比较常用的 Oracle 数据库连接工具:PL/SQL DEVELOPER。 PL/SQL Developer 的安装和配置对于新手来说还是…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程&#xff1a;&#xff08;白话解释&#xff09; 我们将原始待发送的消息称为 M M M&#xff0c;依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)&#xff08;意思就是 G &#xff08; x ) G&#xff08;x) G&#xff08;x) 是已知的&#xff09;&#xff0…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper&#xff08;简称 DM&#xff09;是 Linux 内核中的一套通用块设备映射框架&#xff0c;为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程&#xff0c;并配以详细的…...

MySQL 知识小结(一)

一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库&#xff0c;分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷&#xff0c;但是文件存放起来数据比较冗余&#xff0c;用二进制能够更好管理咱们M…...

Caliper 负载(Workload)详细解析

Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...

pycharm 设置环境出错

pycharm 设置环境出错 pycharm 新建项目&#xff0c;设置虚拟环境&#xff0c;出错 pycharm 出错 Cannot open Local Failed to start [powershell.exe, -NoExit, -ExecutionPolicy, Bypass, -File, C:\Program Files\JetBrains\PyCharm 2024.1.3\plugins\terminal\shell-int…...