共享鎖和排它鎖
mysql的鎖系統:shared lock 和 exclusive lock (共享鎖和排它鎖,也叫讀鎖和寫鎖,即read lock和write lock)
讀鎖是共享的,或者說是相互不阻塞的
寫鎖是排他的,乙個寫鎖會阻塞其他的寫鎖和讀鎖
在實際的資料庫系統中,每時每刻都發生鎖定,當某個使用者在修改某部分資料1時,mysql會通過1鎖定阻止其他使用者對統一資料的讀取。
共享鎖【s鎖】
又稱讀鎖,若事務t對資料物件a加上s鎖,則事務t可以讀a但不能修改a,其他事務只能再對a加s鎖,而不能加x鎖,直到t釋放a上的s鎖。
這保證了其他事務可以讀a,但在t釋放a上的s鎖之前不能對a做任何修改。
排他鎖【x鎖】
又稱寫鎖。若事務t對資料物件a加上x鎖,事務t可以讀a也可以修改a,其他事務不能再對a加任何鎖,直到t釋放a上的鎖。
這保證了其他事務在t釋放a上的鎖之前不能再讀取和修改a。
排他鎖用法:for update,比如,select name from table where id=1 for update;
鎖的粒度和鎖的策略
mysql有三種鎖的級別:頁級、表級、行級。
myisam和memory儲存引擎採用的是表級鎖(table-level locking);bdb儲存引擎採用的是頁面鎖(page-level locking),但也支援表級鎖;innodb儲存引擎既支援行級鎖(row-level locking),也支援表級鎖,但預設情況下是採用行級鎖。
mysql這3種鎖的特性可大致歸納如下:
表級鎖:開銷小,加鎖快;不會出現死鎖;鎖定粒度大,發生鎖衝突的概率最高,併發度最低。
行級鎖:開銷大,加鎖慢;會出現死鎖;鎖定粒度最小,發生鎖衝突的概率最低,併發度也最高。
頁面鎖:開銷和加鎖時間界於表鎖和行鎖之間;會出現死鎖;鎖定粒度界於表鎖和行鎖之間,併發度一般。
mysql 的S 鎖和X鎖的區別
mysql的鎖系統 shared lock和exclusive lock 共享鎖和排他鎖,也叫讀鎖和寫鎖,即read lock和write lock 讀鎖是共享的,或者說是相互不阻塞的 寫鎖是排他的,乙個寫鎖會阻塞其他的寫鎖和讀鎖 在實際的資料庫系統中,每時每刻都發生鎖定,當某個使用者在修改某部分資...
mysql 的S 鎖和X鎖的區別
mysql的鎖系統 shared lock和exclusive lock 共享鎖和排他鎖,也叫讀鎖和寫鎖,即read lock和write lock 讀鎖是共享的,或者說是相互不阻塞的 寫鎖是排他的,乙個寫鎖會阻塞其他的寫鎖和讀鎖 在實際的資料庫系統中,每時每刻都發生鎖定,當某個使用者在修改某部分資...
mysql 的S 鎖和X鎖的區別
共享鎖和排它鎖 mysql的鎖系統 shared lock和exclusive lock 共享鎖和排他鎖,也叫讀鎖和寫鎖,即read lock和write lock 讀鎖是共享的,或者說是相互不阻塞的 寫鎖是排他的,乙個寫鎖會阻塞其他的寫鎖和讀鎖 在實際的資料庫系統中,每時每刻都發生鎖定,當某個使用...