1. 程式人生 > >MySQL的表鎖、行鎖

MySQL的表鎖、行鎖

鎖是計算機協調多個程序或純執行緒併發訪問某一資源的機制。

相對其他資料庫而言,MySQL的鎖機制比較簡單,其最顯著的特點是不同的儲存引擎支援不同的鎖機制。

MySQL大致可歸納為以下3種鎖:

  • 表級鎖:開銷小,加鎖快;不會出現死鎖;鎖定粒度大,發生鎖衝突的概率最高,併發度最低。
  • 行級鎖:開銷大,加鎖慢;會出現死鎖;鎖定粒度最小,發生鎖衝突的概率最低,併發度也最高。
  • 頁面鎖:開銷和加鎖時間界於表鎖和行鎖之間;會出現死鎖;鎖定粒度界於表鎖和行鎖之間,併發度一般

--------------------------------------------------------

MySQL表級鎖的鎖模式(MyISAM)

MySQL表級鎖有兩種模式:表共享讀鎖(Table Read Lock)和表獨佔寫鎖(Table Write Lock)。
對MyISAM的讀操作,不會阻塞其他使用者對同一表讀請求,但會阻塞對同一表的寫請求;
對MyISAM的寫操作,則會阻塞其他使用者對同一表的讀和寫操作;
MyISAM表的讀操作和寫操作之間,以及寫操作之間是序列的。
當一個執行緒獲得對一個表的寫鎖後,只有持有鎖執行緒可以對錶進行更新操作。其他執行緒的讀、寫操作都會等待,直到鎖被釋放為止。