MySQL MVCC的快照讀和當前讀區別,Redis的RDB+AOF混合持久化流程。

MySQL MVCC 的快照讀和當前讀區別

快照讀 (Snapshot Read)

  • 定義: 讀取數據的歷史版本(快照),基于 MVCC(多版本并發控制)實現。
  • 特點:
    • 不加鎖,非阻塞讀。
    • 返回事務開始時的快照數據,確保一致性。
    • 依賴 Undo Log 和版本鏈。
  • 適用場景: 普通的 SELECT 查詢。
  • 示例:
SELECT * FROM user WHERE id = 1;
  • 隔離級別: Read Committed(讀已提交) 和 Repeatable Read(可重復讀) 中常用。

當前讀 (Current Read)

  • 定義: 讀取數據的最新版本,通常涉及加鎖。
  • 特點:
    • 加鎖操作,保證數據一致性。
    • 返回最新提交的數據。
    • 使用行鎖、間隙鎖等機制。
  • 適用場景: 加鎖查詢或寫操作(如 UPDATE、DELETE)。
  • 示例:
SELECT * FROM user WHERE id = 1 FOR UPDATE;  -- 排他鎖
UPDATE user SET name = 'Tom' WHERE id = 1;
  • 隔離級別: 適用于所有隔離級別。

主要區別

特性快照讀當前讀
數據版本歷史快照最新數據
是否加鎖不加鎖加鎖
實現方式MVCC + Undo Log鎖 + 最新數據
示例普通 SELECT加鎖 SELECT, DML

Redis RDB + AOF 混合持久化流程

  • Redis 在 4.0 版本引入了 RDB 和 AOF 的混合持久化,結合 RDB 的快速恢復和 AOF 的數據完整性。以下是流程:

1. 開啟混合持久化

  • 配置:
# confaof-use-rdb-preamble yes  # 啟用混合持久化

2. 數據寫入

  • 客戶端寫命令(如 SET、DEL)被記錄到 AOF 緩沖區。

3. 觸發重寫

  • 手動觸發: BGREWRITEAOF 命令。
  • 自動觸發: 根據 AOF 文件大小增長規則。

4. 混合持久化過程

  1. 生成 RDB 快照:
    • 子進程將當前內存數據生成 RDB 文件。
  2. 寫入 AOF 文件:
    • 將 RDB 快照寫入新 AOF 文件的開頭。
  3. 追加增量命令:
    • 子進程生成快照期間,主進程緩沖寫命令。
    • 快照完成后,將緩沖區的命令以 AOF 格式追加到文件。
  4. 替換舊文件:
    • 新 AOF 文件(RDB + AOF 增量)原子替換舊文件。

5. 數據恢復

  • 重啟時:
    1. 加載 AOF 文件中的 RDB 部分,快速恢復內存。
    2. 執行后續 AOF 命令,補齊增量變更。

配置示例

# conf
save 900 1           # RDB 觸發條件
appendonly yes       # 啟用 AOF
aof-use-rdb-preamble yes  # 混合持久化

優點

  • RDB: 文件小,恢復快。
  • AOF: 數據丟失少。
  • 混合: 兼顧速度和完整性。

總結

  • MySQL MVCC:
    • 快照讀:歷史數據,無鎖。
    • 當前讀:最新數據,加鎖。
  • Redis 混合持久化:
    • RDB 提供初始快照,AOF 追加增量,子進程重寫,原子替換。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/74455.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/74455.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/74455.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Cesium 自定義路徑導航材質

cesium 自定義路徑導航紋理圖片隨便更換,UI 提供設計圖片即可達到效果; 打開小馬的weix 關注下 搜索“技術鏈” 回復關鍵詞《《路徑》》獲取原始代碼; 拿到就能用輕松解決!幫忙點個關注吧!

3月25號

添加圖片的一些例子: // 創建一個二維數組,用來管理數據int[][] data new int[4][4]; // 記錄空白方塊的位置int x0;int y0; // 定義一個變量,記錄當前展示圖片的路徑String path"E:\\java\\jigsawgame\\路飛\\路飛"; // 加載圖片細節: // …

【機器學習】什么是支持向量機?

什么是支持向量機? 支持向量機(SVM,Support Vector Machine)是一種強大的機器學習算法,常用于分類問題,也可以用于回歸問題。它的核心思想是通過找到一個最佳的“超平面”來將不同類別的數據分開&#xff…

10分鐘打造專屬AI助手!ToDesk云電腦/順網云/海馬云操作DeepSeek哪家強?

文章目錄 一、引言云計算平臺概覽ToDesk云電腦:隨時隨地用上高性能電腦 二 .云電腦初體驗DeekSeek介紹版本參數與特點任務類型表現 1、ToDesk云電腦2、順網云電腦3、海馬云電腦 三、DeekSeek本地化實操和AIGC應用1. ToDesk云電腦2. 海馬云電腦3、順網云電腦 四、結語…

Spring Boot 一個接口實現任意表的 Excel 導入導出

Java的web開發需要excel的導入導出工具,所以需要一定的工具類實現,如果是使用easypoi、Hutool導入導出excel,會非常的損耗內存,因此可以嘗試使用easyexcel解決大數據量的數據的導入導出,且可以通過Java8的函數式編程解…

QT原子變量:QAtomicInteger、QAtomicPointer、QAtomicFlag

引言:原子變量為何重要? 在多線程編程中,共享數據的原子性訪問是保證線程安全的核心。傳統互斥鎖雖然有效,但會帶來性能損耗和死鎖風險。QT提供的原子類型(QAtomicInteger、QAtomicPointer、QAtomicFlag)通…

大模型金融企業場景落地應用

一、商業銀行體系 1. 江蘇銀行 企業背景:江蘇銀行是總部位于江蘇南京的全國性股份制商業銀行,在城商行中資產規模位居前列,積極擁抱金融科技,將數字化轉型作為核心戰略之一。近年來,江蘇銀行持續加大在人工智能、大數…

卡特蘭數在數據結構上面的運用

原理 Catalan數是一個數列,其第n項表示n個不同結點可以構成的二叉排序樹的數量。Catalan數的第n項公式為:  其中,是組合數,表示從2n個元素中選擇n個元素的組合數。 Catalan數的原理可以通過以下方式理解&…

影視后期工具學習之PR(中)

pr剪輯之旅----聲音設計 第五課 鏡頭語言和綠幕摳像 超級鍵效果(超級鍵通過簡單的吸管取色和參數調整,即可實現專業級摳像與合成效果。無論是綠幕替換背景,還是創意雙重曝光,都能輕松駕馭。建議結合「Alpha 通道」視圖觀察透明區域,逐步優化細節,最終導出高質量視頻。)…

使用BootStrap 3的原創的模態框組件,沒法彈出!估計是原創的bug

最近在給客戶開發一個CRM系統,其中用到了BOOTSTRAP的模態框。版本是3。由于是剛開始用該框架。所以在正式部署到項目中前,需要測試一下,找到框架中的如下部分。需要說明的是。我用的asp.net mvc框架開發。測試也是在asp.net mvc環境下。 復制…

Camera2 與 CameraX 閑談

目錄 📂 前言 1. 🔱 Camera2 2. 🔱 CameraX 3. 🔱 Camera2 與 CameraX 1)使用復雜度與開發效率 2)控制能力與應用場景 3)設備兼容性與穩定性 4)更新與維護 4. &#x1f4a0…

【大語言模型_8】vllm啟動的模型通過fastapi封裝增加api-key驗證

背景: vllm推理框架啟動模型不具備api-key驗證。需借助fastapi可以實現該功能 代碼實現: rom fastapi import FastAPI, Header, HTTPException, Request,Response import httpx import logging# 創建 FastAPI 應用 app FastAPI() logging.basicConfig(…

基于SpringBoot的名著閱讀網站

作者:計算機學姐 開發技術:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源碼”。 專欄推薦:前后端分離項目源碼、SpringBoot項目源碼、Vue項目源碼、SSM項目源碼、微信小程序源碼 精品專欄:…

Langchain 自定義工具和內置工具

使用介紹 自定義工具時的元素概念介紹 在Langchain中,工具(Tool)是與語言模型交互的基本單元。以下是自定義工具時的關鍵元素: name 定義:工具的名稱,用于唯一標識該工具。作用:當工具被集成…

Gitee上庫常用git命令

Gitee上庫常用git命令 1、Fork 項目2、個人倉庫修改3、追加提交4、創建PR5、多筆commit合一 1、Fork 項目 2、個人倉庫修改 git add . // -s 表示自動添加郵箱簽名信息,-m表示其后跟隨commit描述 git commit -sm “add transition freeze” git push origin [目標…

Java 大視界 -- Java 大數據在智慧農業精準灌溉與施肥決策中的應用(144)

💖親愛的朋友們,熱烈歡迎來到 青云交的博客!能與諸位在此相逢,我倍感榮幸。在這飛速更迭的時代,我們都渴望一方心靈凈土,而 我的博客 正是這樣溫暖的所在。這里為你呈上趣味與實用兼具的知識,也…

Redux,React-redux。基礎

狀態管理庫,集中式存儲狀態,管理狀態 ? redux //簡單實現 redux源碼 export function createStore(reducer) {// reducer由用戶編寫, 必須是一個函數,dispatch的時候,reducer要執行if (typeof reducer ! function) t…

5.2 位運算專題:LeetCode 268. 丟失的數字

1. 題目鏈接 LeetCode 268. 丟失的數字 2. 題目描述 給定一個包含 [0, n] 范圍內 n 個不同整數的數組 nums(實際長度為 n),找出數組中缺失的那個數字。 示例: 輸入:nums [3,0,1] → 輸出:2(…

基于第三方庫的人臉識別系統的設計與實現

標題:基于第三方庫的人臉識別系統的設計與實現 內容:1.摘要 本文針對傳統人臉識別系統開發復雜、效率低的問題,旨在設計并實現基于第三方庫的人臉識別系統。通過選用合適的第三方人臉識別庫,利用其成熟的算法和接口,簡化系統開發流程。對收集…

【Android】VehiclePropertyAccess引起CarService崩潰

VehiclePropertyAccess引起CarService崩潰 VehiclePropertyAccess VehiclePropertyAccess屬性,用于定義車輛屬性的訪問權限。權限包括 讀:READ,只可以讀取,不能寫入。 VehiclePropertyAccess:READ寫:WRITE&#xf…