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