按粒度可以分為:1、行級鎖,MySQL中鎖定粒度最細的一種鎖,表示只針對當前操作的行進行加鎖;2、表級鎖,MySQL中鎖定粒度最大的一種鎖,表示對當前操作的整張表加鎖;3、頁級鎖,MySQL中鎖定粒度介于行級鎖和表級鎖中間的一種鎖。
本教程操作環(huán)境:windows7系統(tǒng)、mysql8版本、Dell G3電腦。
在關系型數據庫中,可以按照鎖的粒度把數據庫鎖分為行級鎖(INNODB引擎)、表級鎖(MYISAM引擎)和頁級鎖(BDB引擎 )。
MyISAM和InnoDB存儲引擎使用的鎖:
-
MyISAM采用表級鎖(table-level locking)。
-
InnoDB支持行級鎖(row-level locking)和表級鎖,默認為行級鎖。
行級鎖,表級鎖和頁級鎖對比
-
行級鎖:MySQL中鎖定粒度最細的一種鎖,表示只針對當前操作的行進行加鎖。行級鎖能大大減少數據庫操作的沖突。其加鎖粒度最小,但加鎖的開銷也最大。行級鎖分為共享鎖和排他鎖。
特點:開銷大,加鎖慢;會出現死鎖;鎖定粒度最小,發(fā)生鎖沖突的概率最低,并發(fā)度也最高。
-
表級鎖:MySQL中鎖定粒度最大的一種鎖,表示對當前操作的整張表加鎖,它實現簡單,資源消耗較少,被大部分MySQL引擎支持。最常使用的MyISAM與InnoDB都支持表級鎖定。表級鎖定分為表共享讀鎖(共享鎖)與表獨占寫鎖(排他鎖)。
特點:開銷小,加鎖快;不會出現死鎖;鎖定粒度大,發(fā)出鎖沖突的概率最高,并發(fā)度最低。
-
頁級鎖:是MySQL中鎖定粒度介于行級鎖和表級鎖中間的一種鎖。表級鎖速度快,但沖突多,行級沖突少,但速度慢。所以取了折衷的頁級,一次鎖定相鄰的一組記錄。
特點:開銷和加鎖時間界于表鎖和行鎖之間;會出現死鎖;鎖定粒度界于表鎖和行鎖之間,并發(fā)度一般
相關免費學習推薦:mysql視頻教程