依粒度可以分為:1、行級鎖,MySQL中鎖定粒度最細的一種鎖,表示只針對目前操作的行進行加鎖;2、表級鎖,MySQL中鎖定粒度最大的一種鎖,表示對目前操作的整張表加鎖;3、頁級鎖,MySQL中鎖定粒度介於行級鎖和表級鎖中間的一種鎖。
本教學操作環境:windows7系統、mysql8版本、Dell G3電腦。
在關聯式資料庫中,可以依照鎖定的粒度把資料庫鎖定分為行級鎖定(INNODB引擎)、表格級鎖定(MYISAM引擎)和頁級鎖定(BDB引擎 )。
MyISAM和InnoDB儲存引擎所使用的鎖定:
#MyISAM採用表級鎖定(table-level locking)。
InnoDB支援行級鎖定(row-level locking)和表格級鎖定,預設為行級鎖定。
行級鎖,表級鎖定和頁級鎖定比較
行級鎖定:MySQL中鎖定粒度最細的一種鎖,表示只針對目前操作的行進行加鎖。行級鎖能大幅減少資料庫操作的衝突。其加鎖粒度最小,但加鎖的開銷也最大。行級鎖分為共享鎖和排他鎖。
特點:開銷大,加鎖慢;會出現死鎖;鎖定粒度最小,發生鎖定衝突的機率最低,並發度也最高。
表級鎖定:MySQL中鎖定粒度最大的一種鎖,表示整個操作的整個表加鎖,它實作簡單,資源消耗較少,被大部分MySQL引擎支援。最常使用的MyISAM與InnoDB都支援表級鎖定。表級鎖定分為表共享讀鎖(共享鎖)與表獨佔寫鎖(排他鎖)。
特點:開銷小,加鎖快;不會出現死鎖;鎖定粒度大,發出鎖定衝突的機率最高,並發度最低。
頁級鎖定:是MySQL中鎖定粒度介於行級鎖定和表級鎖定中間的一種鎖定。表級鎖定速度快,但衝突多,行級衝突少,但速度慢。所以取了折衷的頁級,一次鎖定鄰近的一組記錄。
特點:開銷和加鎖時間界於表鎖定和行鎖之間;會出現死鎖;鎖定粒度界於表鎖和行鎖之間,並發度一般
#相關免費學習推薦:mysql影片教學
#以上是mysql資料庫鎖定粒度可以分為什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!