【TiDB理論知識04】TiKV-分布式事務與MVCC

分布式事務

下面一個事務 里面有兩個更新,分別將id=1的Tom改為Jack,將id=2的zhangsan 改為 lisi。在MySQL中這個事務很普通,但是在分布式數據庫TiDB 中的會遇到什么問題呢?

begin;
(1,'Tom') --> (1,'Jack')
(2,'zhangsan') --> (2,'lisi')
commit;

比如(1,‘Tom’)? 存儲在一個TiKV中 ,(2,'zhangsan')存儲在另一個TiKV中,

當我完成修改操作(1,‘Tom’) --> (1,‘Jack’) 數據所在的TiKV并提交后,存儲(2,'zhangsan')的TiKV不可用了,這樣就出現了一個事務中一部分提交修改持久化,一部分未提交的狀況,破壞了事務的原子性。

TiDB采用Google的模型解決這個問題?

分布式事務在TiKV的存儲

通過一個只修改一行的事務了解事務是如何存儲在TiKV中的 。

事務流程

begin;? 從PD中獲取事務開始的時間戳 start_ts

接下來會把修改的數據讀取到內存中,

commit;兩階段提交 ;第一階段?prewrite階段,寫兩個CF, 分別為default CF? 和 Lock CF。將內存中修改的數據寫入到TiKV節點中 ,將鎖信息寫入到TiKV節點中。第二階段 commit階段,從PD中獲取事務結束的時間戳commit_ts。

樂觀鎖:在提交commit的時候將鎖信息寫入到TiKV ,其他會話感知不到

悲觀鎖:將鎖信息提前寫入到TiKV中,其他會話可以感知到。

目前討論的按樂觀鎖討論

事務是如何存儲在TiKV上?

事務中,TiKV節點會有三個CF?分別存儲為

default? CF 存儲修改的數據,put? <3_100,Frank > 在 (ID_時間戳,修改的新值),只存儲修改的新值,因為新數據永遠在上面

put? <3_100,Frank > 修改

put? <3_100,Frank > 插入

delete? <3_100,Frank > 刪除

Lock CF 存儲鎖信息 ,只給事務修改的第一行加一把主鎖 ,其他修改的行指向主鎖。

鎖結構<3,(w,pk,3,100,...)>? w代表寫鎖,pk代表主鍵,3 代表key? ,100代表開始時間戳

在Write CF中 寫入 提交信息 ,commit 之后 兩階段提交的第二階段,

<3_110,100>? <業務ID_提交時間,事務開始時間>

然后寫入 鎖信息的清理,不是刪除 LOCK CF中數據,而是插入一條數據 例如

<3,(D,pk,3,100,...)>? D 代表刪除

write CF 不單單會記錄提交信息 ,當這一行的數據長度小于255字節時 ,還能寫數據的修改。

分布式事務在TiKV的實現

分布式事務解決的關鍵點:只給修改的第一行加一把主鎖 ,其他行加的是鎖的指向?,指向第主鎖 。分布式事務原子性,取決于主鎖。

put <1_100,Jack> 業務id_事物開始的時間戳 ,

<1,(W,pk,1,100...)>?只給修改的第一行加一把主鎖 ,其他行加的是鎖的指向?,指向第主鎖?

put<2_100,Candy>

<2,(w,@1,2,100...)> 存儲的是鎖的指向,指向的是主鎖。

MVCC

如果需要修改很多數據,這些數據在修改期間都不能讀寫,那嚴重影響了數據庫系統的并發性。

解決上面的方法 :寫確實不能再寫了,因為這些數據在修改。但是可以讀。

其他數據庫也有MVCC。

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

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

相關文章

玩轉大數據11:數據可視化與交互式分析

1. 引言 數據可視化和交互式分析是大數據領域中的重要方面。隨著大數據時代的到來&#xff0c;數據量越來越大&#xff0c;數據類型越來越復雜&#xff0c;傳統的數據處理和分析方法已經無法滿足我們的需求。數據可視化可以將復雜的數據以簡單、直觀的方式呈現出來&#xff0c…

實用編程技巧:MybatisPlus結合groupby實現分組和sum求和

&#x1f341; 作者&#xff1a;知識淺談&#xff0c;CSDN簽約講師&#xff0c;CSDN博客專家&#xff0c;華為云云享專家&#xff0c;阿里云專家博主 &#x1f4cc; 擅長領域&#xff1a;全棧工程師、爬蟲、ACM算法 &#x1f492; 公眾號&#xff1a;知識淺談 &#x1f525;網站…

JVM 性能調優及監控診斷工具 jps、jstack、jmap、jhat、jstat、hprof 使用詳解

目錄 一. 前言 二. jps&#xff08;Java Virtual Machine Process Status Tool&#xff09; 三. jstack 四. jmap&#xff08;Memory Map&#xff09;和 jhat&#xff08;Java Heap Analysis Tool&#xff09; 五. jstat&#xff08;JVM統計監測工具&#xff09; 六. hpro…

接口冪等性 token機制(防重令牌) 基于springboot2 redis實現 請提供示例代碼

在基于Spring Boot 2和Redis實現防重令牌的冪等性控制時&#xff0c;你可以使用Redis存儲令牌信息&#xff0c;并在接口請求時驗證令牌的有效性。下面是一個簡單的示例代碼&#xff0c;演示了如何使用Spring Boot 2和Redis實現防重令牌的機制&#xff1a; import org.springfr…

EMC VNX Unified存儲NAS控制臺常見問題解答

每次遇到VNX unfied的case就是一坨屎&#xff0c;很多客戶根本不理解什么是Unifed storage&#xff0c;EMC的Clariion中端存儲系統還分Block和Unified的產品。這個blog就是簡單介紹一下VNX Unified存儲的管理控制臺&#xff0c;英文是 control station, 簡稱為CS。 顧名思義&a…

蒼穹影視V20七彩視界/免授權開源源碼/熱門影視APP源碼帶后臺+帶安裝教程

源碼簡介&#xff1a; 蒼穹影視V20七彩視界&#xff0c;它是免授權開源源碼&#xff0c;作為影視APP源碼&#xff0c;它帶后臺&#xff0c;也帶安裝教程。 蒼穹影視 V20 全新后臺七彩視界免受權開源源碼此版本為天穹公益版開源無解密安裝教程 全新后臺很是都雅&#xff0c;源碼…

pair的用法,詳解

1.pair是什么 pair名為二元組&#xff0c;顧名思義&#xff0c;就是儲存二元組的。 2.pair的初始化 pair<第一個值類型, 第二個值類型> pr 第一個值類型&#xff1a;要儲存的第一個值的數據類型第二個值類型&#xff1a;要儲存的第二個值的數據類型pair<int, int&g…

倫茨科技宣布ST17H6x芯片已通過Apple Find My「查找」認證

深圳市倫茨科技有限公司&#xff08;以下簡稱“倫茨科技”&#xff09;發布ST17H6x Soc平臺。成為繼Nordic之后全球第二家取得Apple Find My「查找」認證的芯片廠家&#xff0c;該平臺提供可通過Apple Find My認證的Apple查找&#xff08;Find My&#xff09;功能集成解決方案。…

【圖像拼接】論文精讀:Deep Rectangling for Image Stitching: A Learning Baseline

第一次來請先看這篇文章:【圖像拼接(Image Stitching)】關于【圖像拼接論文精讀】專欄的相關說明,包含專欄使用說明、創新思路分享等(不定期更新) 圖像拼接系列相關論文精讀 Seam Carving for Content-Aware Image ResizingAs-Rigid-As-Possible Shape ManipulationAdap…

年底不同外貿客戶催單模板分享

最近工廠又爆單了&#xff0c;有些小的訂單都沒時間管了。時間過得很快&#xff0c;眼看就剩一個多月就春節&#xff0c;大家可以抓住這段時間催一下還有機會成單的客戶&#xff0c;好為來年做準備&#xff01; 1.老客戶模板 Dear xxx, Greetings. Do you have any new inqu…

FIR IP 學習記錄

工具&#xff1a; matlab filterdesigner 工具箱 vivado FIR IP核 實現&#xff1a; 1.matlab設計與測試 先用matlab設計目標濾波器&#xff0c;得到濾波器的抽頭系數。 如圖&#xff0c;根據需求選擇 低通/高通/帶通/帶阻。 由于vivado用的是FIR IP核&#xff0c;所以設…

蘋果手機video標簽播放視頻問題(播放mp4視頻遇到的坑)

1.場景描述 服務端上傳MP4視頻文件&#xff0c;iOS客戶端通過URL播放該視頻文件。提供視頻接口&#xff0c;可以進行視頻下載或者直接播放&#xff0c;但是iOS手機無法播放&#xff0c;且PC端safari瀏覽器也無法播放。 2.問題描述 安卓手機可以正常播放視頻&#xff0c;iOS手機…

什么是HTML?

?前言? 本文主要介紹什么是HTML以及W3C &#x1f352;歡迎點贊 &#x1f44d; 收藏 ?留言評論 &#x1f4dd;私信必回喲&#x1f601; &#x1f352;博主將持續更新學習記錄收獲&#xff0c;友友們有任何問題可以在評論區留言 文章目錄 什么是HTMLHTML發展史HTML的特點什么…

Linux權限理解(1)

目錄 1.shell命令以及運行原理 2.Linux權限的概念 Linux權限管理 01.文件訪問者的分類&#xff08;人&#xff09; 02.文件類型和訪問權限&#xff08;事物屬性&#xff09; a) 文件類型 b)基本權限 03.文件權限值的表示方法 04.文件訪問權限的相關設置方法 a)chmod …

「JavaScript每日一練」系列——提高你的JS技能(第一天)

以后我會陸續發布關于JavaScript知識點以及案例面試題 文章目錄 文章目錄 題目 一、詳細講解 二、代碼 1.引入庫 總結 題目 輸入一個數字&#xff0c;判斷是不是水仙花數自戀數&#xff08;自冪數 各位的3次方十位的三次方百位的三次方等于153&#xff09; ----輸出true或fals…

軟件合集(項目開發中會用到的軟件)

jeecg&#xff08;JeecgBoot 文檔中心&#xff09; JeecgBoot是一款基于BPM的低代碼平臺&#xff01;前后端分離架構 SpringBoot 2.x&#xff0c;SpringCloud&#xff0c;Ant Design&Vue&#xff0c;Mybatis-plus&#xff0c;Shiro&#xff0c;JWT&#xff0c;支持微服務。…

FPGA設計時序分析概念之Timing Arc

目錄 1.1 Timing Arc概念 1.2 Timing Arcs的類型 1.3 Timing Sense(時序感知) 1.4 參考資料 1.1 Timing Arc概念 在時序工具對設計進行時序分析時&#xff0c;經常會看到一個概念Timing Arch(時序弧)。Timing Arc是一個信號一個單元Cell的輸入引腳Pin到該單元輸出引腳Outpu…

python epub文件解析

python epub文件解析 代碼BeautifulSoup 介紹解釋 代碼 import ebooklib from bs4 import BeautifulSoup from ebooklib import epubbook epub.read_epub("邏輯思維訓練1200題.epub")# 解析 for item in book.get_items():# 提取書中的文本內容if item.get_type() …

Redis主從架構中從節點的master_link_status:down

項目場景&#xff1a; 在搭建Redis的主從架構時&#xff0c;查看Redis的從節點狀態時發現其連接的主節點的狀態為down&#xff0c;并且查看主節點的狀態時發現連接的從節點數量為0。 問題描述 原因分析&#xff1a; 可能在主節點中配置了密碼&#xff0c;即requirepass。 解決…

算法:常見的鏈表算法

文章目錄 鏈表算法兩數相加兩兩交換鏈表中的節點重排鏈表合并K個升序鏈表K個一組翻轉鏈表 總結 本篇總結常見的鏈表算法題和看他人題解所得到的一些收獲 鏈表算法 關于鏈表的算法&#xff1a; 畫圖&#xff1a;畫圖可以解決絕大部分的數據結構的問題&#xff0c;任何的算法題…