日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL高级理论-MVCC提交查询相关(版本链)

發(fā)布時間:2025/3/15 数据库 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL高级理论-MVCC提交查询相关(版本链) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

首先要介紹幾個概念:

1. ? ?MVCC(Multi-Version Concurren):多版本并發(fā)控制,是MySQL的事務型存儲引擎如InnoDB。

2. ? ?trx_id與roll_pointer:MySQL會給每個表加2個字段,trx_id是事務字段id,roll_pointer為回滾字段。

3. ? ?事務會有一個ID,只有更新(刪除和插入是特性的更新)會生成事務ID。

4. ? ?在事務中進行更新,會把原記錄放到undo回滾日志里面,然后再插入一條新記錄,這個新記錄的roll_pointer指向剛剛放到undo回滾日志里面的那個記錄。

5. ? ?在事務中使用select不會生成事務ID。

6. ? ?但執(zhí)行查詢sql會生成一致性視圖read-view,它由查詢的那一刻所有未提交事務ID數(shù)組和已經創(chuàng)建的最大事務ID組成。查詢的數(shù)據(jù)結構需要和read-view做對比從而得到數(shù)據(jù)。

7. ? ?刪除操作是特殊的update,在版本鏈最新的地方復制一份,然后將刪除的事務id放到trx_id中,同時在該幾年的頭信息(record header)里的(deleted flag)標記為true,表名記錄已經被刪除,不返回數(shù)據(jù)。

8. ? ?MVCC快照機制不同的session,查詢同一條sql語句,如果存在不一樣的結果集,并不是在不同的session復制一份。

9. ? ?MySQL中快照也叫版本鏈,也叫記錄版本鏈,也叫undo回滾日志。 只有1個。

10. ?read-view指的是未提交事物數(shù)組到最大的事物ID,可重復讀會沿用前面的read-view。

11. ? 事務又分為重復讀和提交后讀,重復讀在東一個會話下查值是一樣的。

12. ? 重復讀如果第一次讀到100,不管中間其他會話怎么操作,不管有沒有提交,在這個會話下都只會讀到100.除非undo數(shù)據(jù)被清了。

?

了解上面的各個概念,其實就差不多了。

下面來搞個時序圖分析下:

再來一個分析圖:

總結

以上是生活随笔為你收集整理的MySQL高级理论-MVCC提交查询相关(版本链)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。