下面一起來了解下MySQL數(shù)據(jù)庫有哪幾種鎖定機(jī)制,相信大家看完肯定會受益匪淺,文字在精不在多,希望MySQL數(shù)據(jù)庫有哪幾種鎖定機(jī)制這篇短內(nèi)容是你想要的。
公司主營業(yè)務(wù):成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、成都外貿(mào)網(wǎng)站建設(shè)公司、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)公司推出金平免費(fèi)做網(wǎng)站回饋大家。MySQL鎖定機(jī)制簡介
數(shù)據(jù)庫鎖定機(jī)制簡單來說就是數(shù)據(jù)庫為了保證數(shù)據(jù)的一致性而使各種共享資源在被并發(fā)訪問變得有序所設(shè)計(jì)的一種規(guī)則。
對于任何一種數(shù)據(jù)庫來說都需要有相應(yīng)的鎖定機(jī)制,所以MySQL自然也不例外。
MySQL數(shù)據(jù)庫由于其自身架構(gòu)的特點(diǎn),存在多種數(shù)據(jù)存儲引擎,每種存儲引擎所針對的應(yīng)用場景特點(diǎn)都不太一樣,為了滿足各自特定應(yīng)用場景的需求,每種存儲引擎的鎖定機(jī)制都是為各自所面對的特定場景而優(yōu)化設(shè)計(jì),所以,各種存儲引擎的鎖定機(jī)制也有較大區(qū)別。
總的來說,MySQL各存儲引擎使用了三種類型(級別)的鎖定機(jī)制:行級鎖定,頁級鎖定和表級鎖定。
行級鎖定(row-level)
行級鎖,一般是指排它鎖,即被鎖定行不可進(jìn)行修改、刪除,只可以被其他會話select。
排他鎖又稱為寫鎖,簡稱X鎖,顧名思義,排他鎖就是不能與其他鎖并存,如一個(gè)事務(wù)獲取了一個(gè)數(shù)據(jù)行的排他鎖,其他事務(wù)就不能再獲取該行的其他鎖。
行級鎖定大的特點(diǎn)就是鎖定對象的顆粒度很小,也是目前各大數(shù)據(jù)庫管理軟件所實(shí)現(xiàn)的鎖定顆粒度最小的。
由于鎖定顆粒度很小,所以發(fā)生鎖定資源競爭的概率也小,能夠給予應(yīng)用程序盡可能大的并發(fā)處理能力提高一些需要高并發(fā)應(yīng)用系統(tǒng)的整體性能。
雖然在并發(fā)處理能力上面有較大的優(yōu)勢,但是行級鎖定也因此帶來了不少弊端。
由于鎖定資源的顆粒度很小,所以每次獲取鎖和釋放鎖需要做的事情也很多,帶來的消耗自然也就更大了。
此外,行級鎖定也最容易發(fā)生死鎖。
表級鎖定(table-level)
表級鎖,直接鎖定整張表,在你鎖定期間,其他進(jìn)程無法對該表進(jìn)行寫操作。如果你是寫鎖,則其他進(jìn)程則讀也不允許。
和行級鎖定相反,表級別的鎖定是mysql各存儲引擎中大顆粒度的鎖定機(jī)制。
該鎖定機(jī)制大的特點(diǎn)就是實(shí)現(xiàn)邏輯非常簡單,帶來的系統(tǒng)負(fù)面影響最小。所以獲取鎖和釋放鎖的速度很快。
由于表級鎖一次會將整個(gè)表鎖定,所以可以很好的避免困擾我們的死鎖問題。
當(dāng)然,鎖定顆粒度大帶來的負(fù)面影響就是出現(xiàn)資源爭用的概率也會很高,致使并發(fā)度大打折扣。
頁級鎖定(page-level)
頁級鎖定是MySQL中比較獨(dú)特的一種鎖定級別,在其他數(shù)據(jù)庫管理軟件中也并不是太常見。
頁級鎖定的特點(diǎn)是鎖定顆粒度介于行級鎖定和表級鎖定之間,所以獲取鎖所需要的資源開銷,以及所能提供的并發(fā)處理能力也同樣介于上面二者之間。
另外,頁級鎖定和行級鎖定一樣,也會發(fā)生死鎖。
小結(jié)
在數(shù)據(jù)庫實(shí)現(xiàn)資源鎖定的過程中,隨著鎖定資源顆粒度的減小,鎖定相同數(shù)據(jù)量的數(shù)據(jù)所需要消耗的內(nèi)存數(shù)量是越來越多,實(shí)現(xiàn)算法也會越來越復(fù)雜。
隨著鎖定資源顆粒度的減小,應(yīng)用程序的訪問請求遇到鎖等待的可能性也會隨之降低,系統(tǒng)整體并發(fā)度頁隨之提升。
在MySQL中,使用表級鎖定的是MyISAM、MEmory、CSv等一些非事務(wù)型存儲引擎,而使用行級鎖的主要是InnoDB存儲引擎和NDB Cluster存儲引擎,頁級鎖定主要是BerkeleyDB存儲引擎的鎖定方式。
看完MySQL數(shù)據(jù)庫有哪幾種鎖定機(jī)制這篇文章后,很多讀者朋友肯定會想要了解更多的相關(guān)內(nèi)容,如需獲取更多的行業(yè)信息,可以關(guān)注我們的行業(yè)資訊欄目。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。