<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
介紹MVCC之前,先介紹下事務:事務是為了保證資料庫中資料的完整性和一致性。
事務的4個基本要素:
目的:主要是為了 提高資料庫並行效能。用更好的方式去處理 讀/寫 衝突,做到即使有 讀/寫 衝突時,也能做到不加鎖,非阻塞並行讀。
不同隔離級別下,可能引發的問題: 髒讀:並行情況下,一方事務讀到了另一方事務 “已 update
但未 commit
” 的資料,破壞了事務隔離性。不可重複讀:並行情況下,一方事務讀到了另一方事務 “已 update
或 delete
,並 commit
” 的資料,破壞了事務隔離性。幻讀:並行情況下,一方事務讀到了另一方事務" insert
並 commit
"的資料,導致前後讀取結果不一致。
MVCC中的四種事務隔離級別:
提問:V1、V2、V3在不同事務隔離級別下讀取到的值分別是:
LBCC 鎖相關:
MySQL 5.5 版本之前,預設的儲存引擎是MyISAM,5.5之後預設引擎是Innodb。Innodb支援事務,包括:行鎖/表鎖,MyISAM不支援。 意向鎖 意向共用鎖/讀鎖(表鎖型別,無法手動建立),mysql 中語法: lock in share mode
意向排它鎖/寫鎖(表鎖型別,無法手動建立),mysql 中語法: for update
常見問題:為什麼要加入意向鎖?
意向鎖並不是真正用來鎖定資料的,而是用來告訴你當前表中是否已經有了被 共用鎖/排它鎖
鎖定的資料行。如果有就沒必要再去加無用的表鎖了,起到一個標識作用,提高加表鎖的效率(相當於高鐵洗手間門上方是否有人正在使用的 “指示燈”)。
記錄鎖(Record Lock)、間隙鎖(Gap Lock)、臨鍵鎖(Next-Key Lock):
問題:如圖示:執行此sql語句(先開啟事務):BEGIN; SELECT * FROM tbl WHERE id > 15 FOR UPDATE;
,以下兩個sql語句可以執行成功嗎?
MVCC底層實現詳解:
快照讀(實際上為讀相關的操作):讀取的是記錄的可見版本 (有可能是歷史版本),不用加鎖。
簡單的 SELECT
操作,屬於快照讀,不加鎖。
SELECT * FROM user WHERE ?
當前讀(實際上為寫相關的操作):在事務中,update
資料前,還要去MySQL中重新讀取一遍該資料對應最新版本的記錄,並且 當前讀 返回的記錄都會加上鎖,保證其他事務不會再並行修改這條記錄。以下兩種方式都屬於當前讀,需要加鎖:
SELECT
* FROM user WHERE id = xxx LOCK IN SHARE MODE
;INSERT
/ UPDATE
/ DELETE
等寫操作。問題:在 RR-可重複讀 的預設隔離級別下,假設起始的age為18,那麼Q1和Q2對應的age分別是多少呢?
UPDATE
寫操作,觸發了 當前讀,所以要先去讀最新提交的版本號記錄(即:事務C UPDATE
後提交的記錄),然後事務B再去執行自己的 UPDATE
操作。也就是要先去讀事務C提交的最新資料為19,然後事務B自身再 UPDATE
加1最終變為20。SELECT
查詢操作,觸發 快照讀。所以事務A只認準事務 BEGIN 開始之前記錄的 最新最後提交的版本號,其記錄值也就是初始的18。BEGIN
事務開始的時候會建立一個快照,併為對應事務分配一個事務id,即 TRX_IDUPDATE
操作(當前讀),所以 row_trx_id 為自身的 TRX_ID 的值,分別是1001和1002。而事務A沒有 UPDATE
操作(快照讀),所以只認準事務A在 事務開始前 最後的版本號 up_limit_id=999,其 age=18。SELECT
只觸發 “快照讀” 。而當你包含 INSERT
/ UPDATE
/ DELETE
等 寫操作 時,這時就會觸發 當前讀,也就是在事務中,在相關寫操作之前會再去讀取一次其他事務的最後提交記錄。這裡的關鍵在於你事務中的sql是單純的 SELECT
語句(快照讀),還是你事務在的sql是包含了INSERT
/ UPDATE
/ DELETE
等 寫操作(當前讀)。最後,補充一個問題點:
如果不宣告的建立主鍵,會有哪些危害? 比如你的id(假設int型別)沒有宣告為主鍵,並且也沒有宣告唯一索引(當未宣告主鍵時,唯一索引會被取代為主鍵)
到此這篇關於MySQL中 LBCC 和 MVCC 的理解及常見問題範例的文章就介紹到這了,更多相關MySQL中LBCC和 MVCC內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45