麻豆黑色丝袜jk制服福利网站-麻豆精品传媒视频观看-麻豆精品传媒一二三区在线视频-麻豆精选传媒4区2021-在线视频99-在线视频a

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > MySQL 是如何實現四大隔離級別的?

MySQL 是如何實現四大隔離級別的?

來源:千鋒教育
發布人:xqq
時間: 2023-10-13 22:46:57 1697208417

一、MySQL 是如何實現四大隔離級別的

首先說讀未提交,它是性能較好,也可以說它是最野蠻的方式,因為它壓根兒就不加鎖,所以根本談不上什么隔離效果,可以理解為沒有隔離。

再來說串行化。讀的時候加共享鎖,也就是其他事務可以并發讀,但是不能寫。寫的時候加排它鎖,其他事務不能并發寫也不能并發讀。

最后說讀提交和可重復讀。這兩種隔離級別是比較復雜的,既要允許一定的并發,又想要兼顧的解決問題。

為了解決不可重復讀,或者為了實現可重復讀,MySQL 采用了 MVVC (多版本并發控制) 的方式。

我們在數據庫表中看到的一行記錄可能實際上有多個版本,每個版本的記錄除了有數據本身外,還要有一個表示版本的字段,記為 row trx_id,而這個字段就是使其產生的事務的 id,事務 ID 記為 transaction id,它在事務開始的時候向事務系統申請,按時間先后順序遞增。

一行記錄現在有 3 個版本,每一個版本都記錄這使其產生的事務 ID,比如事務A的transaction id 是100,那么版本1的row trx_id 就是 100,同理版本2和版本3。

在上面介紹讀提交和可重復讀的時候都提到了一個詞,叫做快照,學名叫做一致性視圖,這也是可重復讀和不可重復讀的關鍵,可重復讀是在事務開始的時候生成一個當前事務全局性的快照,而讀提交則是每次執行語句的時候都重新生成一次快照。

對于一個快照來說,它能夠讀到那些版本數據,要遵循以下規則:

當前事務內的更新,可以讀到;

版本未提交,不能讀到;

版本已提交,但是卻在快照創建后提交的,不能讀到;

版本已提交,且是在快照創建前提交的,可以讀到;

利用上面的規則,再返回去套用到讀提交和可重復讀的那兩張圖上就很清晰了。還是要強調,兩者主要的區別就是在快照的創建上,可重復讀僅在事務開始是創建一次,而讀提交每次執行語句的時候都要重新創建一次。

存在這的情況,兩個事務,對同一條數據做修改。最后結果應該是哪個事務的結果呢,肯定要是時間靠后的那個對不對。并且更新之前要先讀數據,這里所說的讀和上面說到的讀不一樣,更新之前的讀叫做“當前讀”,總是當前版本的數據,也就是多版本中最新一次提交的那版。

假設事務A執行 update 操作, update 的時候要對所修改的行加行鎖,這個行鎖會在提交之后才釋放。而在事務A提交之前,事務B也想 update 這行數據,于是申請行鎖,但是由于已經被事務A占有,事務B是申請不到的,此時,事務B就會一直處于等待狀態,直到事務A提交,事務B才能繼續執行,如果事務A的時間太長,那么事務B很有可能出現超時異常。加鎖的過程要分有索引和無索引兩種情況,比如下面這條語句

update user set age=11 where id = 1

id 是這張表的主鍵,是有索引的情況,那么 MySQL 直接就在索引數中找到了這行數據,然后干凈利落的加上行鎖就可以了。

而下面這條語句

update user set age=11 where age=10

表中并沒有為 age 字段設置索引,所以, MySQL 無法直接定位到這行數據。那怎么辦呢,當然也不是加表鎖了。MySQL 會為這張表中所有行加行鎖,沒錯,是所有行。但是呢,在加上行鎖后,MySQL 會進行一遍過濾,發現不滿足的行就釋放鎖,最終只留下符合條件的行。雖然最終只為符合條件的行加了鎖,但是這一鎖一釋放的過程對性能也是影響極大的。所以,如果是大表的話,建議合理設計索引,如果真的出現這種情況,那很難保證并發度。

延伸閱讀:

二、什么是數據庫和數據庫管理系統

數據庫的應用非常廣泛,舉個例子,我們平時在瀏覽器上搜索內容,就要用到數據庫去檢索我們的關鍵字。以前我們可能會用數組、集合、文件等來存儲數據,但是接下來我們就會面臨一個問題,當存儲的數據或內容過多的時候,我們如何去精準的找到我們需要的東西,這時候數據庫管理系統就派上了用場。除此之外,數據庫管理系統還能永久的儲存我們的數據。

為了便于大家理解,這里先給大家講解幾個概念

DB數據庫(database):存儲數據的“倉庫”。它保存了一系列有組織的數據。

DBMS數據庫管理系統(Database Management System):數據庫是通過DBMS創建和操作的容器。

SQL,結構化查詢語言(Structured Query Language)用一句話概括,SQL是一種特殊目的的編程語言,一種專門用來與數據庫通信的語言。在數據庫中,數據被結構化并存儲在不同的表中,從而簡化了訪問,更新和操作數據的過程。該表由列和行組成。數據庫中的表可以在關系的幫助下進行連接。要在數據庫中執行與數據相關的任務,可以使用SQL。SQL代表結構化查詢語言,旨在在特定RDBMS內創建,修改和管理數據庫中的數據。

SQL優點:

1、不是某個特定數據庫供應商專有的語言,幾乎所有DBMS(數據庫管理系統)都支持SQL

2、簡單易學

3、雖然簡單,但實際上是一種強有力的語言,靈活使用其語言元素,可以進行非常復雜和高級的數據庫操作。

聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
主站蜘蛛池模板: 一本色道久久综合亚洲精品| 久久精品国产亚洲7777| 国产v亚洲v欧美v专区| 高清毛片免费看| 欧美交换乱理伦片120秒| 啊v在线播放| 全彩本子acg里番本子| 亚洲va在线va天堂va手机| 大胸女大学生| 再深点灬舒服灬太大爽| 三级在线看中文字幕完整版| 好湿好大硬得深一点动态图| 色哟哟网站在线观看| 韩国一级在线观看| 国产精品久久国产三级国不卡顿 | 精品国产综合区久久久久久| 樱花草在线社区www韩国| 国产麻豆剧果冻传媒一区| 日韩精品无码一区二区三区| 要灬要灬再深点受不了好舒服| 国产对白受不了了中文对白| 亚洲麻豆视频| 无翼乌漫画全彩| 成年女人a毛片免费视频| 欧美电影《轻佻寡妇》| 青青国产成人久久91| 国产精品美女视视频专区| 国内精品视频一区二区八戒| 羞羞漫画小舞被黄漫免费| 男人天堂官方网站| 亚洲国产另类久久久精品小说| 九九久久精品国产免费看小说| 嗯嗯啊在线观看网址| 天天在线天天看成人免费视频| 久久久久久久久久国产精品免费| 两性高清性色生活片性高清←片| 亚洲午夜一区二区电影院| 你是我的城池营垒免费看| 午夜爽爽| 免费看国产一级特黄aa大片| www.爱情岛论坛|