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
英文地址,請注明出處:http://en.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…