想要找個網(wǎng)站做環(huán)評公示剛剛中國宣布重大消息
創(chuàng)作不易,本篇文章如果幫助到了你,還請點贊 關(guān)注支持一下?>𖥦<)!!
主頁專欄有更多知識,如有疑問歡迎大家指正討論,共同進步!給大家跳段街舞感謝支持!? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
目錄
- 一、數(shù)據(jù)庫鎖分類
- 二、鎖的使用情況
鎖對數(shù)據(jù)并發(fā)訪問的一致性、有效性尤其重要,鎖沖突影響數(shù)據(jù)庫的性能。
一、數(shù)據(jù)庫鎖分類
按照鎖屬性分為:
- 共享鎖(Share Lock):又稱為讀鎖、S 鎖,多個事務對于同一數(shù)據(jù)可以共享一把鎖,只可讀不可改。支持并發(fā)讀取
- 排他鎖(eXclusive Lock):又稱為寫鎖、X 鎖,一個事務獲得了一個數(shù)據(jù)的排他鎖,其他事務就不能獲得鎖,可讀可改
按照鎖的粒度分為:
- 行鎖(InnDB):只鎖定某一行或多行,不對其他行有影響。開銷較大;可能會出現(xiàn)死鎖;鎖粒度小,并發(fā)度高
- 表鎖(InnDB、MyIsam):鎖整個表。開銷小;不會出現(xiàn)死鎖;鎖粒度大,可能發(fā)生鎖沖突
- 頁鎖:鎖一頁數(shù)據(jù)。開銷和速度介于行鎖和表鎖之間;可能會出現(xiàn)死鎖;粒度一般。
二、鎖的使用情況
- 共享鎖(Share Lock):
- 主要用于數(shù)據(jù)的并發(fā)讀取操作,允許多個事務同時讀取同一數(shù)據(jù)資源,但不允許對數(shù)據(jù)進行修改。
SELECT ... LOCK IN SHARE MODE
對所選數(shù)據(jù)加上共享鎖。
SELECT * FROM xx_table WHERE xx_condition LOCK IN SHARE MODE;
- 排他鎖(eXclusive Lock):
- 主要用于數(shù)據(jù)的修改操作,當一個事務獲得某個數(shù)據(jù)的排他鎖后,其他事務無法對該數(shù)據(jù)進行任何操作(包括讀取和修改)。
SELECT ... FOR UPDATE
對所選數(shù)據(jù)加上排他鎖。- 排他鎖常用于確保數(shù)據(jù)的完整性和一致性,特別是在需要對數(shù)據(jù)進行修改的場景中。
SELECT * FROM xx_table WHERE xx_condition FOR UPDATE;
- 行鎖(InnoDB):
- 行鎖適用于高并發(fā)的場景,能夠最大程度地減少鎖沖突,提高并發(fā)性和系統(tǒng)吞吐量。
- InnoDB存儲引擎支持行鎖,因此在使用InnoDB作為數(shù)據(jù)庫引擎時,可以充分利用行鎖的優(yōu)勢。
- 表鎖(InnoDB、MyISAM):
- 表鎖通常用于對表進行**DDL操作(如ALTER TABLE)**或備份等需要操作整張表的情況。
- MyISAM存儲引擎只支持表鎖,因此在高并發(fā)的讀寫場景下,MyISAM的性能可能不如InnoDB。
大家的點贊、收藏、關(guān)注將是我更新的最大動力! 歡迎留言或私信建議或問題。 |
大家的支持和反饋對我來說意義重大,我會繼續(xù)不斷努力提供有價值的內(nèi)容!如果本文哪里有錯誤的地方還請大家多多指出(●'?'●) |