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

歡迎訪問 生活随笔!

生活随笔

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

数据库

8、MySQL表锁、行锁和页锁

發(fā)布時(shí)間:2025/3/20 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 8、MySQL表锁、行锁和页锁 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

MySQL 按鎖的粒度可以細(xì)分為行級鎖、頁級鎖和表級鎖。
我們可以將鎖粒度理解成鎖范圍。

1)表級鎖(table lock)

表級鎖為表級別的鎖定,會鎖定整張表,可以很好的避免死鎖,是 MySQL 中最大顆粒度的鎖定機(jī)制。

一個(gè)用戶在對表進(jìn)行寫操作(插入、刪除、更新等)時(shí),需要先獲得寫鎖,這會阻塞其它用戶對該表的所有讀寫操作。沒有寫鎖時(shí),其它讀取的用戶才能獲得讀鎖,讀鎖之間是不相互阻塞的。

表級鎖最大的特點(diǎn)就是實(shí)現(xiàn)邏輯非常簡單,帶來的系統(tǒng)負(fù)面影響最小。所以獲取鎖和釋放鎖的速度很快。當(dāng)然,鎖定顆粒度大帶來最大的負(fù)面影響就是出現(xiàn)鎖定資源爭用的概率會很高,致使并發(fā)度大打折扣。

不過在某些特定的場景中,表級鎖也可以有良好的性能。例如,READ LOCAL 表級鎖支持某些類型的并發(fā)寫操作。另外,寫鎖也比讀鎖有更高的優(yōu)先級,因此一個(gè)寫鎖請求可能會被插入到讀鎖隊(duì)列的前面(寫鎖可以插入到鎖隊(duì)列中讀鎖的前面,反之讀鎖則不能插入到寫鎖的前面)。

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

盡管存儲引擎可以管理自己的鎖,MySQL 本身還是會使用各種有效的表級鎖來實(shí)現(xiàn)不同的目的。例如,服務(wù)器會為諸如 ALTER TABLE 之類的語句使用表級鎖,而忽略存儲引擎的鎖機(jī)制。

2)頁級鎖(page lock)

頁級鎖是 MySQL 中比較獨(dú)特的一種鎖定級別,在其他數(shù)據(jù)庫管理軟件中并不常見。

頁級鎖的顆粒度介于行級鎖與表級鎖之間,所以獲取鎖定所需要的資源開銷,以及所能提供的并發(fā)處理能力同樣也是介于上面二者之間。另外,頁級鎖和行級鎖一樣,會發(fā)生死鎖。

頁級鎖主要應(yīng)用于 BDB 存儲引擎。

3)行級鎖(row lock)

行級鎖的鎖定顆粒度在 MySQL 中是最小的,只針對操作的當(dāng)前行進(jìn)行加鎖,所以行級鎖發(fā)生鎖定資源爭用的概率也最小。

行級鎖能夠給予應(yīng)用程序盡可能大的并發(fā)處理能力,從而提高需要高并發(fā)應(yīng)用系統(tǒng)的整體性能。雖然行級鎖在并發(fā)處理能力上面有較大的優(yōu)勢,但也因此帶來了不少弊端。

由于鎖定資源的顆粒度很小,所以每次獲取鎖和釋放鎖需要做的事情也就更多,帶來的消耗自然也就更大。此外,行級鎖也最容易發(fā)生死鎖。所以說行級鎖最大程度地支持并發(fā)處理的同時(shí),也帶來了最大的鎖開銷。

行級鎖主要應(yīng)用于 InnoDB 存儲引擎。

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

MySQL 這 3 種鎖的特性可大致歸納如下:

從上述特點(diǎn)可見,很難籠統(tǒng)的說哪種鎖更好,只能具體應(yīng)用具體分析。

從鎖的角度來說,表級鎖適合以查詢?yōu)橹?#xff0c;只有少量按索引條件更新數(shù)據(jù)的應(yīng)用,如 Web 應(yīng)用。而行級鎖更適合于有大量按索引條件,同時(shí)又有并發(fā)查詢的應(yīng)用,如一些在線事務(wù)處理(OLTP)系統(tǒng)。

《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的8、MySQL表锁、行锁和页锁的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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