成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一文講清,MySQL事務隔離級別

數據庫 MySQL
業務系統在運行的時候,往往有很多線程同時在操作數據庫,MySQL也需要多線程的處理多個請求,那么每個事務里的多個SQL語句是如何執行的呢?

業務系統在運行的時候,往往有很多線程同時在操作數據庫,MySQL也需要多線程的處理多個請求,那么每個事務里的多個SQL語句是如何執行的呢?

基本都是從磁盤加載數據頁到Buffer Pool的緩存頁里去,然后更新Buffer Pool里的緩存頁,同時記錄redo log和undo log。

 

 

 

 

多個線程并發執行的時候,會有一些問題:

多個事務并發執行,可能會對緩存頁里的同一行數據進行更新,這種沖突怎么解決?

有的事務在對一行數據進行更新,另一個事務在對這行數據進行查詢,這個沖突怎么解決?

接下來要講的內容,主要包括多事務并發運行存在的問題、MySQL的事務隔離級別、MVCC多版本控制、鎖。

臟讀

事務1讀取了事務2更新的數據,然后事務2回滾操作,那么事務1讀取到的數據就是臟數據。

例如:

張三的工資是8000,現在領導要給他漲工資到10000。

事務1把他的工資改為10000,但事務還沒提交。

事務2正在讀取張三的工資,獨到的是10000。

事務1此時回滾了,張三的工資又變成8000了。

事務2讀取到張三的工資10000為臟數據,事務2做了一次臟讀。

不可重復讀

事務1多次讀取同一數據,事務2在事務1多次讀取的過程中,對數據作了更新并提交,導致事務1多次讀取同一數據時,結果不一致。

例如:

事務1,讀取到張三的工資8000。

事務2,把張三的工資改為10000,提交事務。

事務1,再次讀取張三的工資,此時工資為10000。

在一個事務中前后兩次讀取同一個數據的結果不一樣,就是不可重復讀。

幻讀

一個事務用一樣的SQL多次查詢,每次查詢發現查到一些之前沒看到過的數據。

比如,目前公司工資為8000的人有10人。

事務1,讀取所有工資為8000的人數為10人。

事務2,插入一條工資為10000的記錄。

事務1再次讀取工資為8000的人,為11人。

此時,事務1出現幻覺似的,同樣的SQL查詢語句,第一次查出來10人,第二次查出來11人。

不可重復讀的和幻讀很容易混淆,不可重復讀側重于修改,幻讀側重于新增或刪除。解決不可重復讀的問題只需鎖住滿足條件的行,解決幻讀需要鎖表。

臟讀、不可重復讀、幻讀,數據庫并發執行,每個線程可能會開啟一個事務,每個事務都會執行crud操作。

數據庫并發的執行多個事務,多個事務并發的對緩存頁里的同一批數據進行crud,就可能導致臟讀、不可重復讀、幻讀這些問題。

所以,這些問題的本質是,數據庫多事務并發問題,為了解決這些問題,數據庫設計了事務隔離級別、MVCC多版本控制、鎖機制。

事務隔離級別

SQL標準中定義了4種事務隔離級別,就是說事務并發運行的時候,互相是如何隔離的,MySQL默認是可重復讀(RR)。

 

 

 

 

不同的隔離級別是可以避免不同的事務并發問題的。

read-uncommitted(RU),可能會發生臟讀、不可重復讀、幻讀。

read-committed(RC),不會發生臟讀,但是會發生不可重復讀、幻讀

也就是說,事務沒提交的情況下修改的值,你是讀不到的。但是,一旦事務提交了,你事務就能讀到,所以可能你多次讀到的值不一樣。

repeatable-read(RR),MySQL默認的事務隔離級別,做了大量復雜的工作,解決了臟讀、不可重復讀、幻讀問題,一般生成環境使用這個隔離級別就可以了。

serializable,事務串行執行,根本不會并發執行,所以不會有臟讀、不可重復讀、幻讀這些問題。但缺點也非常明顯,就是并發太差了。一般生產環境也不會使用 

責任編輯:龐桂玉 來源: Hollis
相關推薦

2020-04-07 09:21:45

MySQL數據庫SQL

2020-02-21 20:10:13

搞懂事務隔離級別

2020-04-01 17:26:57

MySQL事務隔離級別數據庫

2020-10-26 09:18:50

RedisCluste

2018-12-19 16:46:38

MySQL事務隔離數據庫

2021-07-26 10:28:13

MySQL事務隔離

2024-04-26 09:17:20

MySQL事務隔離

2021-08-04 13:19:42

MySQL 事務隔離

2021-11-18 15:08:19

MySQLSQL索引

2021-10-25 15:25:38

MySQL索引數據庫

2024-12-02 08:37:04

2024-01-12 07:14:52

AI應用架構

2021-10-29 11:30:31

補碼二進制反碼

2022-06-29 11:01:05

MySQL事務隔離級別

2010-11-19 16:13:06

oracle事務隔離級

2009-06-29 17:54:47

Spring事務隔離

2019-10-15 10:23:13

服務器MySQL 數據

2023-02-02 07:06:10

2025-03-03 08:20:00

MySQL事務隔離數據庫

2022-06-10 11:51:49

MySQL事務隔離
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产亚洲精品久久午夜玫瑰园 | 亚洲一区二区三 | 91色站 | 情侣酒店偷拍一区二区在线播放 | 国产在线第一页 | 久国产精品 | 黄色国产视频 | 九九热精品视频 | 欧美亚洲国产日韩 | 永久www成人看片 | 成人精品一区二区 | 中文字幕国产视频 | 日韩资源| 国产xxxx搡xxxxx搡麻豆 | 91精品久久久久久久久99蜜臂 | 亚洲另类自拍 | 久久里面有精品 | 成人在线视频免费观看 | 丁香一区二区 | 羞羞的视频免费观看 | 可以免费观看的av片 | 色婷婷亚洲国产女人的天堂 | 亚洲精品99久久久久久 | 国产精品久久久久久久免费观看 | 欧美日本一区 | 婷婷久久精品一区二区 | 精国产品一区二区三区四季综 | 久久精品视频在线播放 | 欧美久久久久久 | 最新日韩欧美 | 日韩中文一区二区三区 | 精品久久久网站 | 97国产爽爽爽久久久 | 欧美精品久久久久久久久久 | 91在线免费视频 | 天堂一区二区三区 | 91欧美激情一区二区三区成人 | 久久视频精品 | 亚洲国产欧美日韩 | 精品日韩 | 免费午夜剧场 |