日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

MySQL死鎖的產(chǎn)生原因以及解決方案

瀏覽:30日期:2023-10-11 12:56:49

數(shù)據(jù)庫(kù)和操作系統(tǒng)一樣,是一個(gè)多用戶使用的共享資源。當(dāng)多個(gè)用戶并發(fā)地存取數(shù)據(jù) 時(shí),在數(shù)據(jù)庫(kù)中就會(huì)產(chǎn)生多個(gè)事務(wù)同時(shí)存取同一數(shù)據(jù)的情況。若對(duì)并發(fā)操作不加控制就可能會(huì)讀取和存儲(chǔ)不正確的數(shù)據(jù),破壞數(shù)據(jù)庫(kù)的一致性。加鎖是實(shí)現(xiàn)數(shù)據(jù)庫(kù)并 發(fā)控制的一個(gè)非常重要的技術(shù)。在實(shí)際應(yīng)用中經(jīng)常會(huì)遇到的與鎖相關(guān)的異常情況,當(dāng)兩個(gè)事務(wù)需要一組有沖突的鎖,而不能將事務(wù)繼續(xù)下去的話,就會(huì)出現(xiàn)死鎖,嚴(yán) 重影響應(yīng)用的正常執(zhí)行。

在數(shù)據(jù)庫(kù)中有兩種基本的鎖類(lèi)型:排它鎖(Exclusive Locks,即X鎖)和共享鎖(Share Locks,即S鎖)。當(dāng)數(shù)據(jù)對(duì)象被加上排它鎖時(shí),其他的事務(wù)不能對(duì)它讀取和修改。加了共享鎖的數(shù)據(jù)對(duì)象可以被其他事務(wù)讀取,但不能修改。數(shù)據(jù)庫(kù)利用這兩 種基本的鎖類(lèi)型來(lái)對(duì)數(shù)據(jù)庫(kù)的事務(wù)進(jìn)行并發(fā)控制。

死鎖的第一種情況

一個(gè)用戶A 訪問(wèn)表A(鎖住了表A),然后又訪問(wèn)表B;另一個(gè)用戶B 訪問(wèn)表B(鎖住了表B),然后企圖訪問(wèn)表A;這時(shí)用戶A由于用戶B已經(jīng)鎖住表B,它必須等待用戶B釋放表B才能繼續(xù),同樣用戶B要等用戶A釋放表A才能繼續(xù),這就死鎖就產(chǎn)生了。

解決方法:

這種死鎖比較常見(jiàn),是由于程序的BUG產(chǎn)生的,除了調(diào)整的程序的邏輯沒(méi)有其它的辦法。仔細(xì)分析程序的邏輯,對(duì)于數(shù)據(jù)庫(kù)的多表操作時(shí),盡量按照相同的順序進(jìn) 行處理,盡量避免同時(shí)鎖定兩個(gè)資源,如操作A和B兩張表時(shí),總是按先A后B的順序處理, 必須同時(shí)鎖定兩個(gè)資源時(shí),要保證在任何時(shí)刻都應(yīng)該按照相同的順序來(lái)鎖定資源。

死鎖的第二種情況

用戶A查詢一條紀(jì)錄,然后修改該條紀(jì)錄;這時(shí)用戶B修改該條紀(jì)錄,這時(shí)用戶A的事務(wù)里鎖的性質(zhì)由查詢的共享鎖企圖上升到獨(dú)占鎖,而用戶B里的獨(dú)占鎖由于A 有共享鎖存在所以必須等A釋放掉共享鎖,而A由于B的獨(dú)占鎖而無(wú)法上升的獨(dú)占鎖也就不可能釋放共享鎖,于是出現(xiàn)了死鎖。這種死鎖比較隱蔽,但在稍大點(diǎn)的項(xiàng) 目中經(jīng)常發(fā)生。如在某項(xiàng)目中,頁(yè)面上的按鈕點(diǎn)擊后,沒(méi)有使按鈕立刻失效,使得用戶會(huì)多次快速點(diǎn)擊同一按鈕,這樣同一段代碼對(duì)數(shù)據(jù)庫(kù)同一條記錄進(jìn)行多次操 作,很容易就出現(xiàn)這種死鎖的情況。

解決方法:

1、對(duì)于按鈕等控件,點(diǎn)擊后使其立刻失效,不讓用戶重復(fù)點(diǎn)擊,避免對(duì)同時(shí)對(duì)同一條記錄操作。

2、使用樂(lè)觀鎖進(jìn)行控制。樂(lè)觀鎖大多是基于數(shù)據(jù)版本(Version)記錄機(jī)制實(shí)現(xiàn)。即為數(shù)據(jù)增加一個(gè)版本標(biāo)識(shí),在基于數(shù)據(jù)庫(kù)表的版本解決方案中,一般是 通過(guò)為數(shù)據(jù)庫(kù)表增加一個(gè)“version”字段來(lái)實(shí)現(xiàn)。讀取出數(shù)據(jù)時(shí),將此版本號(hào)一同讀出,之后更新時(shí),對(duì)此版本號(hào)加一。此時(shí),將提交數(shù)據(jù)的版本數(shù)據(jù)與數(shù) 據(jù)庫(kù)表對(duì)應(yīng)記錄的當(dāng)前版本信息進(jìn)行比對(duì),如果提交的數(shù)據(jù)版本號(hào)大于數(shù)據(jù)庫(kù)表當(dāng)前版本號(hào),則予以更新,否則認(rèn)為是過(guò)期數(shù)據(jù)。樂(lè)觀鎖機(jī)制避免了長(zhǎng)事務(wù)中的數(shù)據(jù) 庫(kù)加鎖開(kāi)銷(xiāo)(用戶A和用戶B操作過(guò)程中,都沒(méi)有對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)加鎖),大大提升了大并發(fā)量下的系統(tǒng)整體性能表現(xiàn)。Hibernate 在其數(shù)據(jù)訪問(wèn)引擎中內(nèi)置了樂(lè)觀鎖實(shí)現(xiàn)。需要注意的是,由于樂(lè)觀鎖機(jī)制是在我們的系統(tǒng)中實(shí)現(xiàn),來(lái)自外部系統(tǒng)的用戶更新操作不受我們系統(tǒng)的控制,因此可能會(huì)造 成臟數(shù)據(jù)被更新到數(shù)據(jù)庫(kù)中。

3、使用悲觀鎖進(jìn)行控制。悲觀鎖大多數(shù)情況下依靠數(shù)據(jù)庫(kù)的鎖機(jī)制實(shí)現(xiàn),如Oracle的Select … for update語(yǔ)句,以保證操作最大程度的獨(dú)占性。但隨之而來(lái)的就是數(shù)據(jù)庫(kù)性能的大量開(kāi)銷(xiāo),特別是對(duì)長(zhǎng)事務(wù)而言,這樣的開(kāi)銷(xiāo)往往無(wú)法承受。如一個(gè)金融系統(tǒng), 當(dāng)某個(gè)操作員讀取用戶的數(shù)據(jù),并在讀出的用戶數(shù)據(jù)的基礎(chǔ)上進(jìn)行修改時(shí)(如更改用戶賬戶余額),如果采用悲觀鎖機(jī)制,也就意味著整個(gè)操作過(guò)程中(從操作員讀 出數(shù)據(jù)、開(kāi)始修改直至提交修改結(jié)果的全過(guò)程,甚至還包括操作員中途去煮咖啡的時(shí)間),數(shù)據(jù)庫(kù)記錄始終處于加鎖狀態(tài),可以想見(jiàn),如果面對(duì)成百上千個(gè)并發(fā),這 樣的情況將導(dǎo)致災(zāi)難性的后果。所以,采用悲觀鎖進(jìn)行控制時(shí)一定要考慮清楚。

死鎖的第三種情況

如果在事務(wù)中執(zhí)行了一條不滿足條件的update語(yǔ)句,則執(zhí)行全表掃描,把行級(jí)鎖上升為表級(jí)鎖,多個(gè)這樣的事務(wù)執(zhí)行后,就很容易產(chǎn)生死鎖和阻塞。類(lèi)似的情 況還有當(dāng)表中的數(shù)據(jù)量非常龐大而索引建的過(guò)少或不合適的時(shí)候,使得經(jīng)常發(fā)生全表掃描,最終應(yīng)用系統(tǒng)會(huì)越來(lái)越慢,最終發(fā)生阻塞或死鎖。

解決方法:

SQL語(yǔ)句中不要使用太復(fù)雜的關(guān)聯(lián)多表的查詢;使用“執(zhí)行計(jì)劃”對(duì)SQL語(yǔ)句進(jìn)行分析,對(duì)于有全表掃描的SQL語(yǔ)句,建立相應(yīng)的索引進(jìn)行優(yōu)化。

小結(jié)

總體上來(lái)說(shuō),產(chǎn)生內(nèi)存溢出與鎖表都是由于代碼寫(xiě)的不好造成的,因此提高代碼的質(zhì)量是最根本的解決辦法。有的人認(rèn)為先把功能實(shí)現(xiàn),有BUG時(shí)再在測(cè)試階段進(jìn) 行修正,這種想法是錯(cuò)誤的。正如一件產(chǎn)品的質(zhì)量是在生產(chǎn)制造的過(guò)程中決定的,而不是質(zhì)量檢測(cè)時(shí)決定的,軟件的質(zhì)量在設(shè)計(jì)與編碼階段就已經(jīng)決定了,測(cè)試只是 對(duì)軟件質(zhì)量的一個(gè)驗(yàn)證,因?yàn)闇y(cè)試不可能找出軟件中所有的BUG。

以上就是MySQL死鎖的產(chǎn)生原因以及解決方案的詳細(xì)內(nèi)容,更多關(guān)于MySQL死鎖的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: MySQL 數(shù)據(jù)庫(kù)
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩视频精品在线观看| 午夜天堂精品久久久久| 日韩中文字幕91| 亚洲天堂资源| 国产精品xvideos88| 国产99久久| 国产不卡精品在线| 国产麻豆一区二区三区| 综合激情在线| 国产色综合网| 亚洲激情久久| 日韩av首页| 精品视频自拍| 日韩av字幕| 日韩视频在线一区二区三区| 欧美一级鲁丝片| 久久精品理论片| 国产精品手机在线播放| 日本视频一区二区| 日本欧美韩国一区三区| 亚洲免费影视| 99久久夜色精品国产亚洲1000部| 97国产精品| 亚洲午夜天堂| 欧美xxxx中国| 久久精品国产亚洲一区二区三区| 日韩激情一二三区| 综合色一区二区| 亚洲精品成人| japanese国产精品| 欧美日韩在线二区| 成人综合一区| 精品亚洲自拍| 国产成人精选| 日韩一区三区| 在线中文字幕播放| 一区二区三区四区日本视频| 欧美男人天堂| 播放一区二区| 日韩理论片av| 久久天堂成人| 久久要要av| 香蕉久久国产| 日本欧美在线看| 日韩在线黄色| 欧美精品中文字幕亚洲专区| 国产日韩一区二区三区在线 | 日韩精品一区二区三区中文| 日韩二区三区在线观看| 国产精品久久久久77777丨| 国产精品观看| 国产精品久久久久av蜜臀| 狠狠久久伊人| 国产主播一区| 丝瓜av网站精品一区二区| 涩涩涩久久久成人精品| 欧美精品三级在线| 色综合视频一区二区三区日韩 | 欧美xxxx中国| 久久国产直播| 一区视频在线| 免费成人在线观看| 国产丝袜一区| 色婷婷综合网| 亚洲国产日韩欧美在线| 丝袜美腿亚洲一区二区图片| 噜噜噜久久亚洲精品国产品小说| 日韩手机在线| 欧美日韩 国产精品| 国产在线观看91一区二区三区| 久久久人人人| 在线精品亚洲| 成人午夜网址| 蜜臀av国产精品久久久久| 国产精品网址| 日韩欧美另类一区二区| 亚洲精品婷婷| 91av亚洲| 老司机精品久久| 精品中国亚洲| 欧美 日韩 国产精品免费观看| 亚洲精品三级| 国产精品亚洲产品| 日韩啪啪电影网| 亚洲精选91| av综合电影网站| 中文一区一区三区免费在线观| 欧美激情在线精品一区二区三区| 色在线视频观看| 亚洲一区欧美二区| 日本va欧美va精品| 久久久久亚洲| 欧美日韩中出| 国产在线|日韩| 日韩福利视频导航| 四虎成人精品一区二区免费网站| 麻豆极品一区二区三区| 亚洲女同一区| 精品美女在线视频| 综合激情一区| 91精品一区二区三区综合在线爱| 日韩中文av| 日韩精品91| 亚洲精品乱码久久久久久蜜桃麻豆 | 日韩深夜视频| 日本伊人久久| 午夜欧美精品| 日本午夜精品久久久久| 不卡视频在线| 一区二区精品伦理...| 欧美亚洲二区| 亚洲欧美日韩在线观看a三区| 亚州精品视频| 香蕉人人精品| 久久精品天堂| 精品不卡一区| 国产精品亚洲欧美一级在线| 亚洲精品系列| 蜜桃一区二区三区在线| 亚洲欧美久久久| 黄色日韩在线| 亚洲免费网址| 夜久久久久久| 在线精品视频在线观看高清| 午夜精品免费| 亚洲免费网址| 一区二区不卡| 蜜桃av一区| 日av在线不卡| 伊人久久一区| 日韩欧美中文字幕电影| 色综合视频一区二区三区日韩 | 99久久精品费精品国产| 成人污污视频| 91亚洲一区| 日韩一区二区三区免费| 亚洲精品网址| 男女男精品网站| 日韩精品一区二区三区中文| 国内精品亚洲| 首页亚洲欧美制服丝腿| 亚洲夜间福利| 狠狠爱成人网| 亚洲在线免费| 亚洲三级毛片| 日本成人在线网站| 国产欧美三级| 精品久久一区| 精品久久亚洲| 99久久视频| 只有精品亚洲| 国产精品1区| 日韩一区电影| 在线综合亚洲| 日本va欧美va精品发布| 国产精品jk白丝蜜臀av小说| 亚洲伊人av| 99国产精品视频免费观看一公开 | 国产一区精品福利| 欧洲一级精品| 视频一区国产视频| 日韩av字幕| 久久亚州av| 日韩精品不卡一区二区| 亚洲激情中文| 日本国产亚洲| 国产一区二区三区探花| 999国产精品999久久久久久| 中文精品在线| 国产精品天天看天天狠| 99成人在线视频| 亚洲精品免费观看| 成人在线黄色| 亚洲免费精品| 国产精品视频首页| 久久一区二区三区喷水| 日本a级不卡| 精品久久97| 99在线精品免费视频九九视| 欧美久久久网站| 欧美男人天堂| 麻豆国产精品777777在线| 亚州国产精品| 欧美日韩激情在线一区二区三区| 久久爱www.| 一区二区三区四区精品视频| 国产精品毛片久久久| 精品欧美激情在线观看| 欧美日一区二区在线观看| 午夜欧美巨大性欧美巨大| 免费成人在线视频观看| 成人国产综合| 91高清一区| 国产精品18| 中日韩男男gay无套| 麻豆精品视频在线| 久久亚洲欧洲| 精精国产xxxx视频在线播放| 欧美日一区二区在线观看| 香蕉精品久久|