溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

MySQL鎖定機(jī)制的原理是什么

發(fā)布時間:2021-08-03 17:10:18 來源:億速云 閱讀:254 作者:Leah 欄目:數(shù)據(jù)庫

這篇文章給大家介紹MySQL鎖定機(jī)制的原理是什么,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

  數(shù)據(jù)庫鎖定機(jī)制簡單來說,就是數(shù)據(jù)庫為了保證數(shù)據(jù)的一致性,而使各種共享資源在被并發(fā)訪問變得有序所設(shè)計的一種規(guī)則。對于任何一種數(shù)據(jù)庫來說都需要有相應(yīng)的鎖定機(jī)制,所以MySQL自然也不能例外。

  MySQL數(shù)據(jù)庫由于其自身架構(gòu)的特點,存在多種數(shù)據(jù)存儲引擎,每種存儲引擎所針對的應(yīng)用場景特點都不太一樣,為了滿足各自特定應(yīng)用場景的需求,每種存儲引擎的鎖定機(jī)制都是為各自所面對的特定場景而優(yōu)化設(shè)計,所以各存儲引擎的鎖定機(jī)制也有較大區(qū)別。

  MySQL各存儲引擎使用了三種類型(級別)的鎖定機(jī)制:表級鎖定,行級鎖定和頁級鎖定。

表級鎖定(table-level)

  表級別的鎖定是MySQL各存儲引擎中最大顆粒度的鎖定機(jī)制。該鎖定機(jī)制最大的特點是實現(xiàn)邏輯非常簡單,帶來的系統(tǒng)負(fù)面影響最小。所以獲取鎖和釋放鎖的速度很快。由于表級鎖一次會將整個表鎖定,所以可以很好的避免困擾我們的死鎖問題。

  當(dāng)然,鎖定顆粒度大所帶來最大的負(fù)面影響就是出現(xiàn)鎖定資源爭用的概率也會最高,致使并大度大打折扣。

  使用表級鎖定的主要是MyISAM,MEMORY,CSV等一些非事務(wù)性存儲引擎。

行級鎖定(row-level)

  行級鎖定最大的特點就是鎖定對象的顆粒度很小,也是目前各大數(shù)據(jù)庫管理軟件所實現(xiàn)的鎖定顆粒度最小的。由于鎖定顆粒度很小,所以發(fā)生鎖定資源爭用的概率也最小,能夠給予應(yīng)用程序盡可能大的并發(fā)處理能力而提高一些需要高并發(fā)應(yīng)用系統(tǒng)的整體性能。

  雖然能夠在并發(fā)處理能力上面有較大的優(yōu)勢,但是行級鎖定也因此帶來了不少弊端。由于鎖定資源的顆粒度很小,所以每次獲取鎖和釋放鎖需要做的事情也更多,帶來的消耗自然也就更大了。此外,行級鎖定也最容易發(fā)生死鎖。

  使用行級鎖定的主要是InnoDB存儲引擎。

頁級鎖定(page-level)

  頁級鎖定是MySQL中比較獨特的一種鎖定級別,在其他數(shù)據(jù)庫管理軟件中也并不是太常見。頁級鎖定的特點是鎖定顆粒度介于行級鎖定與表級鎖之間,所以獲取鎖定所需要的資源開銷,以及所能提供的并發(fā)處理能力也同樣是介于上面二者之間。另外,頁級鎖定和行級鎖定一樣,會發(fā)生死鎖。

  在數(shù)據(jù)庫實現(xiàn)資源鎖定的過程中,隨著鎖定資源顆粒度的減小,鎖定相同數(shù)據(jù)量的數(shù)據(jù)所需要消耗的內(nèi)存數(shù)量是越來越多的,實現(xiàn)算法也會越來越復(fù)雜。不過,隨著鎖定資源顆粒度的減小,應(yīng)用程序的訪問請求遇到鎖等待的可能性也會隨之降低,系統(tǒng)整體并發(fā)度也隨之提升。

  使用頁級鎖定的主要是BerkeleyDB存儲引擎。

關(guān)于MySQL鎖定機(jī)制的原理是什么就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI