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