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

歡迎訪問 生活随笔!

生活随笔

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

数据库

mysql与缓存脏读_MySQL 事务的隔离级别问题 之 脏读

發布時間:2024/7/5 数据库 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql与缓存脏读_MySQL 事务的隔离级别问题 之 脏读 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 臟讀

所謂的臟讀就是指一個事務讀取了另一個事務未提取的數據。

試想一下:a賬戶要給b賬戶100元購買商品,如果a賬戶開啟一個事務,執行下面的update語句做了如下轉賬的工作:

update account set money=money-100 where name='a';

update account set money=money+100 where name='b';

如果a賬戶先不提交事務,通知b賬戶來查詢,由于b的隔離級別比較低,此時就會讀取a事務中未提交的數據,發現a確實給自己轉了100元,然后給a發貨,等b發貨成功之后,a再將事務回滾,此時b就會受到損傷,這就是臟讀造成的。

為了演示上面的情況,這里我們開啟了兩個命令行窗口(相當于開啟兩個線程),分別模擬a賬戶和b賬戶,如下:

(1)設置b賬戶中事務的隔離級別

大家都知道MySQL的默認隔離級別是Repeatable Read(可重復讀),該級別是可以避免臟讀的,因此需要將b賬戶中事務的隔離級別設置為Read Uncommitted(讀未提交),具體語句如下:

set session transaction isolation level read uncommitted;

如下:

上述語句之中,session表示當前會話,transaction就表示事務,isolation表示隔離,level表示級別,read uncommitted表示當前的隔離級別,該語句執行成功之后,使用select語句查詢事務的隔離級別,結果如下:

select @@tx_isolation;

如下:

從上述結果可以看出,b賬戶的事務隔離級別以及修改為Read Uncommitted,接下來就是演示臟讀的情況

2)演示臟讀

b賬戶:為了證明出現了臟讀的情況,首先在b賬戶中開戶一個事務,并在該事務中查詢當前賬戶的余額信息,查詢結果如下:

start transaction;

select * from account;

如下:

a賬戶:在a賬戶中開啟一個事務,并在當前窗口中執行轉賬功能,具體語句如下:

start transaction;

update account set money=money-100 where name='a';

update account set money=money+100 where name='b';

如下:

需要注意的是:此時不要提交事務,如果提交事務就無法演示出現臟讀的情況。

b賬戶:a賬戶執行完轉賬語句后,b賬戶查詢當前賬戶,如下:

從上面的查詢結果來看,a賬戶已經成功給b賬戶轉賬了100元,這是由于b賬戶的事務隔離級別比較低,因此才讀取了a賬戶還沒有提交的數據內容,出現了臟讀的情況,這時候,b誤以為a賬戶以及轉賬成功,便會給a發貨,當b發貨之后a如果不提交事務將事務回滾,b就會受到損失。

上面演示完畢了,需要將a賬戶中的事務回滾,b賬戶中的事務提交。

(3)設置b賬戶的事務隔離級別

為了防止臟讀發生,可以將b賬戶中的事務隔離級別設置為Read Committed(讀提交),該級別會避免臟讀,具體語句如下:

set session transaction isolation level read committed;

上述的語句執行成功之后,b賬戶的隔離級別已經設置成Read Committed

(4)驗證是否出現臟讀

b賬戶:為了說明沒有出現臟讀的情況,首先要在b賬戶中開啟一個事務,并在該事務中查詢各賬戶的余額情況,查詢結果如下:

a賬戶:在a賬戶中重新開啟一個事務,實現了轉賬功能,如下:

start transaction;

update account set money=money-100 where name='a';

update account set money=money+100 where name='b';

b賬戶:當a 賬戶轉賬成功之后,可以在b賬戶中再次查詢各賬戶的余額信息,查詢結果如下:

通過上面的對比兩次查詢結果可以發現,b賬戶在同一個事務中的查詢結果是一致的,并沒有查詢到a賬戶中未提交的內容,因此可以說明Read Committed 隔離級別可以避免臟讀,最后分別將a賬戶和b賬戶中的事務回滾.

總結

以上是生活随笔為你收集整理的mysql与缓存脏读_MySQL 事务的隔离级别问题 之 脏读的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 四虎影视免费永久大全 | 亚洲无码精品国产 | 亚洲欧美中文字幕 | 国产69精品久久久久777 | 欧美人日b | 免费精品国产 | 成人深夜在线 | 欧美日韩一区二区精品 | 国产污网站 | 天天插天天摸 | 黄瓜视频在线观看 | 黄色av资源 | 邻居少妇张开双腿让我爽一夜 | 少妇一级淫片免费播放 | 免费日韩视频 | 人人爱爱人人 | 日韩不卡免费 | 黄色小视频在线观看 | 深夜福利院 | 天堂在线视频免费观看 | 日韩字幕在线 | 欧美高清性xxxxhd | 91九色视频 | av丝袜在线 | 欧美性生交大片免费看 | 四虎视频国产精品免费 | 致单身男女免费观看完整版 | 97caoporn| 日韩欧美精品一区二区 | 草久av| 精品人妻天天爽夜夜爽视频 | 黄色喷水网站 | 国产毛片a | 91午夜精品亚洲一区二区三区 | 成人h动漫精品一区二区 | 亚洲 欧美 日韩 国产综合 在线 | 国产黄色av片 | 好男人.www| 伊人国产精品 | 国产精品2020 | 日韩少妇一区 | 欧美又粗又长 | 亚洲人成无码网站久久99热国产 | 女女同性女同一区二区三区按摩 | 国产高清免费在线观看 | 亚洲精品久久久久久久久 | 视频在线观看一区二区 | 欧美精品一区二区三区久久久竹菊 | 秋霞久久精品 | 狠狠一区二区 | www视频在线观看网站 | 欧美成人影院 | 黑人巨大av | 6080一级片 | 这里只有精品9 | 韩日视频 | 亚洲欧美在线观看视频 | 三级黄色片免费观看 | 国产精品人人做人人爽人人添 | 婷婷五月精品中文字幕 | 久久久久免费精品 | 欧美 日韩 成人 | 精品久久久久久久久久 | 我要看18毛片 | 在线免费成人 | 国产玖玖 | 少妇一级淫片免费视频 | 宇都宫紫苑在线播放 | 最近最新最好看的2019 | 亚洲视频自拍 | 国产盗摄一区二区三区 | 精品国产无码一区二区 | 老熟妇高潮一区二区三区 | 香蕉国产在线观看 | jizz在线免费观看 | 老子午夜影院 | 成人av电影在线观看 | 亚洲网站在线观看 | 中国无码人妻丰满熟妇啪啪软件 | 欧美国产成人精品一区二区三区 | 男人的天堂一区 | 好吊操这里有精品 | 丁香激情视频 | 成人在线观看一区二区 | 99精品一区 | 少妇视频网站 | 激情拍拍 | 日韩一区二区不卡视频 | 91成品人影院 | 91精彩视频在线观看 | 国产乱仑 | www激情com| 捆绑调教在线观看 | 欧美性猛交xxxxx水多 | 国产精品国产三级国产aⅴ原创 | 毛片在线网 | 射久久| 天天艹日日干 | 久久精品无码一区二区三区 |