首頁  >  文章  >  資料庫  >  mysql資料庫鎖定粒度可以分為什麼

mysql資料庫鎖定粒度可以分為什麼

青灯夜游
青灯夜游原創
2021-04-21 18:38:573964瀏覽

依粒度可以分為:1、行級鎖,MySQL中鎖定粒度最細的一種鎖,表示只針對目前操作的行進行加鎖;2、表級鎖,MySQL中鎖定粒度最大的一種鎖,表示對目前操作的整張表加鎖;3、頁級鎖,MySQL中鎖定粒度介於行級鎖和表級鎖中間的一種鎖。

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn