MySQL问题8

MySQL深度分页优化思路

常见的3种优化思路如下:

1. 子查询优化方式

示例改写前:

SELECT * FROM words 
WHERE name = 'oee' 
ORDER BY id 
LIMIT 99999990, 10;

这个写法会导致 MySQL 扫描并丢弃前面 99999990 行,效率极低。

示例改写后:

SELECT * FROM words
WHERE name = 'one'AND id >= (SELECT id FROM wordsWHERE name = 'one'ORDER BY idLIMIT 99999990, 1)
ORDER BY id
LIMIT 10;

优点:

  • 子查询只查索引字段 id访问数据量小
  • 主查询直接从命中的 id 开始,避免大范围跳过
  • 支持使用覆盖索引提升速度。

2. 记录 ID 方式(基于位置的分页)

每页返回当前页最大 ID,前端保存下来作为下一页的起点。

示例:

上一页最后一条记录的 id = 100001,则下一页查询为:

SELECT * FROM words
WHERE id > 100001
ORDER BY id
LIMIT 10;

优点:

  • 无需 OFFSET,不跳过数据,效率高;
  • 避免回表和大量扫描,非常适合“滚动加载”或“下一页”模式

3. 使用 Elasticsearch 替代分页

对于超大数据量,可以将数据同步到 Elasticsearch,利用其内建的分页机制如:

  • search_after(推荐)
  • scroll(适合大批量导出)

优点:

  • ES 的倒排索引和分页机制在大数据下表现更好;
  • 查询速度快,灵活支持多字段排序和全文搜索。

主从同步机制和实现策略

MySQL中的主从同步机制是一种数据复制技术,将主库(Master)的数据同步到一个或多个从库(Slave),主要通过二进制日志(bin log)实现数据的复制,然后推送给从数据库,从库重放对应日志完成复制。

在这里插入图片描述

优化主从同步延迟

延迟是必然存在的,只能优化无法避免。
常见的4种解决方式:

1. 二次查询

如果从库查询不到结果,可以降级回主库查询一次

查询从库 → 没查到 → 查询主库 → 返回结果

优点:

  • 实现简单,属于兜底策略;
  • 适用于部分对一致性有要求的接口,比如用户刚注册、写入后马上查询的场景。

缺点:

  • 如果用得太频繁,反而将读压力转移回主库;
  • 对主库造成冲击,违背了读写分离的初衷
  • 如果某些查询确定从库必定查不到,可能加剧问题。

2. 强制写后读走主库

对于“写入后立即读取”的操作,强制绑定这些查询走主库,确保数据最新。
在代码层约定:某些操作的读取必须从主库读。

优点:

  • 保证强一致性;
  • 避免延迟导致的数据查不到问题。

缺点:

  • 写死逻辑,灵活性差;
  • 开发维护成本高,不推荐大范围使用;
  • 无法利用从库分担查询压力。

3. 关键业务读写都走主库

对于一些关键业务(如登录、注册、下单)直接从主库读写,不依赖从库

举例:

用户注册后马上登录,如果读取从库可能查不到注册信息;此时登录接口直接走主库即可避免问题。

优点:

  • 避免数据同步延迟引起的“查不到”;
  • 适用于低频关键路径操作
  • 实现相对简单,业务上可控。

缺点:

  • 主库读压力可能上升(但频率不高问题不大);
  • 逻辑需要与业务强绑定。

4. 使用缓存(如 Redis)中转数据

主库写入后,将数据同步到缓存中(如 Redis)。读取请求优先从缓存中查询。

优点:

  • 规避主从延迟问题,缓存读取更快;
  • 减轻主库和从库压力;
  • 适用于频繁访问的热点数据。

缺点:

  • 引入缓存一致性问题;
  • 缓存更新/失效策略需要配合设计;
  • 系统复杂度提升。

方案优点缺点适用场景
二次查询简单兜底主库压力增加不一致时容错
强制写后读主库保证一致性写死逻辑、维护复杂写后即查操作
关键读写走主库可控、可靠主库压力略大注册/登录类接口
使用缓存高性能、抗延迟引入一致性问题热点数据读多写少

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

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

相关文章

洛谷 P1249 最大乘积-普及/提高-

P1249 最大乘积 题目描述 一个正整数一般可以分为几个互不相同的自然数的和,如 312312312,413413413,514235142351423,615246152461524。 现在你的任务是将指定的正整数 nnn 分解成若干个互不相同的自然数(也可以不分解…

大学地理信息科学该如何学习才能好就业

一、明确专业特点与就业方向地理信息科学是一门交叉性强、实践性强的学科,融合了地理学、计算机科学、测绘、遥感等多个领域,广泛应用于自然资源管理、城市规划、交通、环境、农业、水利、智慧城市等行业。主要就业方向包括:政府部门/事业单位…

【git】Git 大文件推送失败问题及解决方案

Git 大文件推送失败问题及解决方案 在日常开发中,我们经常会遇到这样的问题: Remote: File [xxx.exe] size 188.156MB, exceeds quota 100MB Remote: Please remove the file[s] from history and try again这是因为 Gitee/GitHub 等平台对单个文件大小有…

国产银河麒麟三维数字沙盘大数据可视化研训推演模拟仿真地理信息系统

国产银河麒麟三维数字沙盘大数据可视化研训推演模拟仿真地理信息系统独立自主知识产权和原创源代码级地理信息系统平台,核心引擎与算法实现全栈国产化,提供从数据采集、处理到可视化分析的全链条自主可控解决方案, 1.2支持国产操作系统&…

GPT Server 文档

目录配置文件的详细说明(后续持续完善)openai_api_server配置控制器(controller)配置模型(worker)配置模型配置大语言模型 示例:QwenEmbedding模型 示例:Conan-embedding-v1TTS文本转语音模型 示例: Spark-TTST2I 文生图模型示例:…

中国移动云电脑一体机-创维LB2004_瑞芯微RK3566_2G+32G_开启ADB ROOT安卓固件-方法3

中国移动云电脑一体机-创维LB2004_瑞芯微RK3566_2G32G_开启ADB ROOT安卓固件-方法3 声明,这个安卓固件root一旦恢复出厂设置,会变回原样,虽然root,但也无法自行操作。 建议按照:中国移动云电脑一体机-创维LB2004_瑞芯微…

设计模式(策略,观察者,单例,工厂方法)

文章目录1. 设计模式核心概念与C语言实现基础2. 常用设计模式详解模式一:策略模式(Strategy Pattern)模式二:观察者模式(Observer Pattern)模式三:单例模式(Singleton Pattern&#…

terraform入门

一、概念 1、Terraform 的“基础设施即代码”是什么 基础设施即代码 (IaC) 工具允许您使用配置文件而非图形用户界面来管理基础设施。通过定义可版本控制、可重用和可共享的资源配置,IaC 允许您以安全、一致且可重复的方式构建、更改和管理您的基础设施。 Terraform…

ARM 体系结构与存储器

一、RAM 分类SRAM (Static RAM)用 触发器/晶体管 存储 0/1。特点:速度快、功耗低(静态保持),但成本高、容量小。应用:片上缓存、寄存器文件、单片机内存。DRAM (Dynamic RAM)用 电容充放电 存储 0/1。特点:…

Jenkins运维之路(初识流水线)

1.初次使用流水线前面我们用自由风格的流水线进行了项目部署,但是自由风格的流水线只能应付一些简单且项目规模不是很大的部署。为了让流水线能够灵活、通用、逻辑清晰且更加容易维护,现在一般企业都是采取使用了Pipeline的方式来对流水线进行构建&#…

【智能协同云图库】基于统一接口架构构建多维度分析功能、结合 ECharts 可视化与权限校验实现用户 / 管理员图库统计、通过 SQL 优化与流式处理提升数据

摘要:本节围绕提升空间图库管理分析能力,先分用户与管理员两类梳理资源使用、分类、标签等 6 大分析需求,再设计统一实现流程与接口方案,最后通过分层开发完成各需求后端功能,覆盖权限校验、数据处理与接口编写。 本节…

HTML第八课:HTML4和HTML5的区别

HTML第八课&#xff1a;HTML4和HTML5的区别html4 与 html 5的区别快速学习平台html4 与 html 5的区别 示例图 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> &…

CS336——1. Overview

文章目录1. CS336介绍2. 概览2.1 为什么会有这门课程2.1.1 LLM的参数和训练成本2.2.2 小语言模型和LLM的区别2.2 你可以学到什么&#xff1f;2.2.1 Intuitions2.2.2 The bitter lesson3. 全景图(current landscape)/发展历史4. 可执行的课件说明5. 课程设计6. 课程内容6. 1 bas…

ncnn-Android-mediapipe_hand 踩坑部署实录

目录 同时有 nanodet 和yolox,可以做到10fps 没测试:yolox hand ncnn-Android-mediapipe_hand hand 关键点21个模型: ncnn版本: 跑通后,手部关键点集中在图像左上角,经过排查,原因是ncnn版本不对。 CMakeLists.txt 同时有 nanodet 和yolox,可以做到10fps 无训练…

OSPF实验:外部路由引入

OSPF外部路由引入实验目的&#xff1a;除了内部通信外&#xff0c;企业还需要与外部网络进行通信&#xff0c;不同企业网络之间存在互访需求。假设A公司网络部署OSPF协议实现内部通信&#xff0c;因业务发展&#xff0c;需要访问B公司的一台WEB服务器。网络拓扑图&#xff1a;公…

网络上那些在线 PDF 转换工具安全吗?转换 PDF 需要注意什么

PDF 格式凭借跨设备兼容、格式稳定的优势&#xff0c;早已成为个人办公、企业协作中不可或缺的文件格式。无论是压缩 PDF 以满足邮件附件大小限制&#xff0c;还是将 Word 文档转成 PDF 确保排版不变&#xff0c;我们总能遇到需要 PDF 工具的场景。也正因如此&#xff0c;网上涌…

生成对抗网络(GAN)

目录 1 引言 2 生成对抗网络的基本原理 2.1 生成器与判别器 2.2 对抗训练过程 2.3 与传统生成模型的比较 3 GAN的衍生模型 3.1 架构创新与深度卷积GAN 3.2 损失函数优化与Wasserstein GAN 3.3 条件生成与可控合成 3.4 跨域转换与CycleGAN 3.5 高分辨率生成与规模化演…

Vue 3.6 Alien Signals:让响应式性能飞跃式提升

概述 Vue 3.6 引入了革命性的 Alien Signals 技术&#xff0c;这是一种全新的响应式系统&#xff0c;基于细粒度响应式原理&#xff0c;为 Vue 应用带来了前所未有的性能提升和开发体验优化。 什么是 Alien Signals&#xff1f; Alien Signals 是 Vue 3.6 内置的轻量级响应式…

React Hooks 报错?一招解决useState问题

文章目录问题分析问题 在使用import { useState } from "react";时报错&#xff1a;Youre importing a component that needs useState. This React Hook only works in a Client Component. To fix, mark the file (or its parent) with the “use client” direct…