以下的文章主要講述的是MySQL表級鎖與MySQL行級鎖或者是MySQL頁級鎖這三者之間的不同之處以及表級鎖與其他兩種鎖的優越性的表現,以下就是文章的具體內容的描述,望你會有所收獲。
MySQL表級鎖和行級鎖或頁級鎖之間的不同之處還在於:
將同時有一個寫和多個讀的地方做版本(例如在MySQL中的並發插入)。也就是說,數據庫/表支持根據開始訪問數據時間點的不同支持各種不同的試圖。其它名有:時間行程,寫復制,或者是按需復制。
按需復制在很多情況下比頁級鎖或行級鎖好多了。盡管如此,最壞情況時還是比其它正常鎖使用了更多的內存。
可以用應用程序級鎖來代替行級鎖,例如MySQL中的 GET_LOCK() 和 RELEASE_LOCK()。但它們是勸告鎖(原文:These are advisory locks),因此只能用於安全可信的應用程序中。
MySQL表級鎖在下列幾種情況下比頁級鎖和行級鎖更優越:
很多操作都是讀表。
在嚴格條件的索引上讀取和更新,當更新或者刪除可以用單獨的索引來讀取得到時:
- UPDATE tbl_name SET column=value WHERE unique_key_col=key_value;
- DELETE FROM tbl_name WHERE unique_key_col=key_value;
SELECT 和 INSERT 語句並發的執行,但是只有很少的 UPDATE 和 DELETE 語句。
很多的掃描表和對全表的 GROUP BY 操作,但是沒有任何寫表。
以上的相關內容就是對MySQL表級鎖和行級鎖或頁級鎖之間的關系的介紹,望你能有所收獲。