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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

031_mysql事务的安全隐患

發(fā)布時(shí)間:2025/5/22 数据库 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 031_mysql事务的安全隐患 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一. 事務(wù)的安全隱患

1. 讀的安全隱患

1.1. 臟讀: 一個(gè)事務(wù)讀到另外一個(gè)事務(wù)還未提交的數(shù)據(jù)。事務(wù)A讀取了事務(wù)B更新的數(shù)據(jù), 然后B回滾操作, 那么A讀取到的數(shù)據(jù)是臟數(shù)據(jù)。

1.2. 不可重復(fù)讀: 一個(gè)事務(wù)讀到了另外一個(gè)事務(wù)提交的數(shù)據(jù), 造成了前后兩次查詢(xún)結(jié)果不一致。事務(wù)A多次讀取同一數(shù)據(jù), 事務(wù)B在事務(wù)A多次讀取的過(guò)程中,對(duì)數(shù)據(jù)作了更新并提交, 導(dǎo)致事務(wù)A多次讀取同一數(shù)據(jù)時(shí), 結(jié)果不一致。

1.3. 幻讀: 一個(gè)事務(wù)讀到了另一個(gè)事務(wù)insert的數(shù)據(jù), 造成前后查詢(xún)結(jié)果不一致。系統(tǒng)管理員A將數(shù)據(jù)庫(kù)中所有學(xué)生的成績(jī)從具體分?jǐn)?shù)改為ABCDE等級(jí), 但是系統(tǒng)管理員B就在這個(gè)時(shí)候插入了一條具體分?jǐn)?shù)的記錄, 當(dāng)系統(tǒng)管理員A改結(jié)束后發(fā)現(xiàn)多出了一條記錄, 就好像發(fā)生了幻覺(jué)一樣, 這就叫幻讀。

1.4. 不可重復(fù)讀的和幻讀很容易混淆, 不可重復(fù)讀側(cè)重于修改, 幻讀側(cè)重于新增或刪除。解決不可重復(fù)讀的問(wèn)題只需鎖住滿足條件的行, 解決幻讀需要鎖表。

二. 事務(wù)的隔離級(jí)別

1. 查詢(xún)當(dāng)前的mysql8的默認(rèn)隔離級(jí)別。

2. 隔離級(jí)別第一級(jí)別: 讀未提交(read-uncommitted)

2.1. 打開(kāi)客戶(hù)端A, 先將事務(wù)的隔離級(jí)別設(shè)定為讀未提交, 并開(kāi)啟事務(wù)。

2.2. 客戶(hù)端A, 查詢(xún)用戶(hù)信息。

2.3. 客戶(hù)端A未提交事務(wù), 打開(kāi)客戶(hù)端B, 并開(kāi)啟事務(wù), 扣除客戶(hù)1的100塊錢(qián), 不提交事務(wù)。

2.4. 客戶(hù)端B未提交事務(wù), 客戶(hù)端A查看用戶(hù)信息, 查到了客戶(hù)端B更新的數(shù)據(jù)。

2.5. 客戶(hù)端B執(zhí)行了回滾操作, 那么客戶(hù)端A之前讀到的數(shù)據(jù)就是臟數(shù)據(jù)。

2.6. 此時(shí), 客戶(hù)端A減少客戶(hù)1的100塊錢(qián), 發(fā)現(xiàn)執(zhí)行前后, 客戶(hù)1都是900塊, 并沒(méi)有變成800塊。因?yàn)? 客戶(hù)端A讀到了客戶(hù)端B更新的數(shù)據(jù), 后來(lái)客戶(hù)端B又回滾了數(shù)據(jù), 客戶(hù)端A讀到了一條臟數(shù)據(jù)。

3. 讀已提交(第二級(jí)別 read-committed)

3.1. 讀已提交解決了臟讀問(wèn)題, 但是出現(xiàn)了不可重復(fù)讀問(wèn)題, 存在幻讀問(wèn)題。

3.2. 打開(kāi)客戶(hù)端A, 設(shè)置當(dāng)前的事務(wù)隔離級(jí)別為read committed(未提交讀), 開(kāi)啟事務(wù), 查詢(xún)表Account的所有記錄。

3.3. 打開(kāi)客戶(hù)端B, 開(kāi)啟事務(wù), 減少客戶(hù)1的100塊錢(qián), 未提交事務(wù)。

3.4. 客戶(hù)端A, 在客戶(hù)端B更新數(shù)據(jù)前后, 查詢(xún)的數(shù)據(jù)一樣, 解決了臟的問(wèn)題。

3.5. 客戶(hù)端B提交事務(wù)。

3.6. 客戶(hù)端A查詢(xún)到了客戶(hù)端B提交的數(shù)據(jù)。產(chǎn)生了不可重復(fù)讀的問(wèn)題, 客戶(hù)端A進(jìn)行同樣的2次查詢(xún), 2次查詢(xún)結(jié)果不一致。

4. 可重復(fù)讀(第三級(jí)別 repeatable read)

4.1. 打開(kāi)客戶(hù)端A, 設(shè)置當(dāng)前的事務(wù)隔離級(jí)別為repeatable read (可重復(fù)讀), 開(kāi)啟事務(wù), 查詢(xún)表Account的所有記錄。

4.2. 打開(kāi)客戶(hù)端B, 開(kāi)啟事務(wù), 扣除客戶(hù)1的100塊錢(qián), 未提交事務(wù)。

4.3. 客戶(hù)端B更新數(shù)據(jù), 未提交事務(wù), 查詢(xún)客戶(hù)端A, 客戶(hù)端B更新數(shù)據(jù)前后, 客戶(hù)端的數(shù)據(jù)不變, 解決了臟讀問(wèn)題。

4.4. 客戶(hù)端B提交事務(wù)。

4.5. 客戶(hù)端B提交事務(wù)后, 查詢(xún)客戶(hù)端A, 數(shù)據(jù)依然不變。

4.6. 客戶(hù)端B重新開(kāi)啟事務(wù), 插入一條數(shù)據(jù), 并且提交事務(wù)。

4.7. 客戶(hù)端B插入一條數(shù)據(jù), 并且提交事務(wù)后, 客戶(hù)端A查詢(xún)數(shù)據(jù), 依然是以前的數(shù)據(jù)。客戶(hù)端A提交事務(wù)后, 查詢(xún)出了最新數(shù)據(jù)。

5. 可串行化(第四級(jí)別 serializable)

5.1. 打開(kāi)客戶(hù)端A, 設(shè)置事務(wù)隔離級(jí)別為可串行化, 開(kāi)啟事務(wù), 查詢(xún)Account表。

5.2. 打開(kāi)客戶(hù)端B, 開(kāi)啟事務(wù), 查詢(xún)Account表, 客戶(hù)端B可以進(jìn)行查詢(xún)操作。

5.3. 在客戶(hù)端B, 執(zhí)行一個(gè)更新操作, 客戶(hù)端B卡住了, 如果此時(shí)客戶(hù)端A提交或回滾事務(wù), 客戶(hù)端B會(huì)更新成功; 如果客戶(hù)端A長(zhǎng)時(shí)間沒(méi)有提交或回滾事務(wù), 客戶(hù)端B的更新操作就超時(shí)報(bào)錯(cuò)。

5.4. 如果有一個(gè)連接的隔離級(jí)別設(shè)置為了串行化, 那么誰(shuí)先打開(kāi)了事務(wù), 就會(huì)在整張表上加了一個(gè)鎖, 其它事務(wù)不能進(jìn)行寫(xiě)操作。這種事務(wù)隔離級(jí)別解決了所有的安全問(wèn)題。但是這種隔離級(jí)別一般比較少用, 容易造成性能上的問(wèn)題, 效率比較低。

6.事務(wù)的隔離級(jí)別, 按效率劃分, 從高到低: 讀未提交-->讀已提交-->可重復(fù)讀-->可串行化。

7.事務(wù)的隔離級(jí)別, 按攔截程度, 從高到底: 可串行化-->可重復(fù)讀-->讀已提交-->讀未提交。

8. MySQL和Oracle默認(rèn)的事務(wù)隔離級(jí)別

8.1. MySQL默認(rèn)的事務(wù)隔離級(jí)別是: 可重復(fù)讀。

8.2. Oracle默認(rèn)的事務(wù)隔離級(jí)別是: 讀已提交。

9. 隔離級(jí)別

9.1. 讀未提交, 引發(fā)問(wèn)題臟讀。?

9.2. 讀已提交, 解決臟讀, 引發(fā)不可重復(fù)讀。

9.3. 可重復(fù)讀, 解決臟讀、不可重復(fù)讀、幻讀。

9.4. 可串行化, 解決臟讀、不可重復(fù)讀、幻讀, 同時(shí)似乎給整張表添加了一個(gè)鎖, 客戶(hù)并發(fā)讀, 但不能并發(fā)寫(xiě)。

10. 悲觀鎖(排它鎖)

10.1. 丟失更新

10.2. 悲觀鎖

10.3. 客戶(hù)端A開(kāi)啟事務(wù), 給用戶(hù)1的減少100塊, 沒(méi)有提交事務(wù)。

10.4. 客戶(hù)端B開(kāi)啟事務(wù), 刪除用戶(hù)1, 客戶(hù)端B卡頓了, 超時(shí)報(bào)錯(cuò)。

10.5. 客戶(hù)端A提交事務(wù)。

10.6. 客戶(hù)端B刪除用戶(hù)1成功。

總結(jié)

以上是生活随笔為你收集整理的031_mysql事务的安全隐患的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 激情av中文字幕 | 久久精品小视频 | 久久黄色网| 末发成年娇小性xxxxx | 国产视频中文字幕 | 美女扒开尿口来摸 | 亚洲免费视频播放 | 天天综合av | 中文在线最新版天堂8 | 成人福利在线播放 | 在线日韩一区 | 亚洲av无码乱码国产精品fc2 | 欧美野外猛男的大粗鳮 | 亚洲天堂激情 | 激情第四色 | 色999在线观看 | 黄色污污视频网站 | 久久久久国产精品无码免费看 | 亚洲鲁鲁 | 精彩视频一区二区 | 在线视频观看一区 | 亚洲成人观看 | 黄色激情在线观看 | 日韩精品中文字幕一区 | 毛片天天看 | 先锋成人| 日韩精品在线一区二区三区 | 美女隐私免费观看 | 人妻av无码一区二区三区 | 韩国黄色一级片 | 网站在线看| 日韩成年视频 | 国产美女永久免费无遮挡 | 午夜福利123 | 96视频在线观看 | 毛片无限看 | 樱花影院最新免费观看攻略 | 成人宗合 | 亚洲乱码日产精品bd在线观看 | 深夜视频在线 | 亚洲视频在线观看一区二区三区 | 在线观看 一区 | 69视频污| 国产欧美久久久久久 | 国产无套丰满白嫩对白 | 91av在线看| 免费99精品国产自在在线 | 黑人玩弄人妻一区二区三区影院 | 日日干夜夜爱 | 国产无遮挡免费观看视频网站 | 超碰天天操 | 亚洲一线在线观看 | www.毛片.com | 久久久久国产一区二区三区潘金莲 | av中文字幕免费在线观看 | 成人精品av | 懂色中文一区二区在线播放 | 日本妈妈3 | 男人晚上看的视频 | 可以免费在线观看的av | 超碰加勒比| 四虎4hu永久免费网站影院 | 国产人久久人人人人爽 | 亚洲97色| 国产欧美一区二区三区视频 | 亚洲精品成av人片天堂无码 | 一区二区三区久久久久 | 日韩欧美在线一区二区三区 | 日韩久久成人 | 日本极品少妇 | 久久不卡影院 | 1024精品一区二区三区日韩 | 波多野结衣在线影院 | 国产av国片偷人妻麻豆 | 爱爱网站视频 | 穿越异世荒淫h啪肉np文 | 国产成人在线免费视频 | 久草操 | 国产精品国产成人国产三级 | 2020国产精品视频 | a国产 | 久久人人精品 | 成人激情免费视频 | 国产91丝袜在线播放九色 | 最新国产精品 | 中文字幕在线不卡 | 欧美乱强伦| 三级免费看 | 捆绑调教在线观看 | 日本特级片 | 天天干天天舔天天射 | 日韩激情av在线 | 视频在线91| 欧美在线aa | 性五月天 | 亚洲视频中文 | 国产91精品一区二区麻豆亚洲 | 69**夜色精品国产69乱 | 午夜小视频免费 |