国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 數(shù)據(jù)庫(kù) > MySQL > 正文

MySQL行級(jí)鎖、表級(jí)鎖、頁(yè)級(jí)鎖詳細(xì)介紹

2024-07-24 12:47:20
字體:
供稿:網(wǎng)友

頁(yè)級(jí):引擎 BDB。
表級(jí):引擎 MyISAM , 理解為鎖住整個(gè)表,可以同時(shí)讀,寫不行
行級(jí):引擎 INNODB , 單獨(dú)的一行記錄加鎖

表級(jí),直接鎖定整張表,在你鎖定期間,其它進(jìn)程無法對(duì)該表進(jìn)行寫操作。如果你是寫鎖,則其它進(jìn)程則讀也不允許
行級(jí),,僅對(duì)指定的記錄進(jìn)行加鎖,這樣其它進(jìn)程還是可以對(duì)同一個(gè)表中的其它記錄進(jìn)行操作。
頁(yè)級(jí),表級(jí)鎖速度快,但沖突多,行級(jí)沖突少,但速度慢。所以取了折衷的頁(yè)級(jí),一次鎖定相鄰的一組記錄。

MySQL 5.1支持對(duì)MyISAM和MEMORY表進(jìn)行表級(jí)鎖定,對(duì)BDB表進(jìn)行頁(yè)級(jí)鎖定,對(duì)InnoDB表進(jìn)行行級(jí)鎖定。
對(duì)WRITE,MySQL使用的表鎖定方法原理如下:
如果在表上沒有鎖,在它上面放一個(gè)寫鎖。
否則,把鎖定請(qǐng)求放在寫鎖定隊(duì)列中。

對(duì)READ,MySQL使用的鎖定方法原理如下:
如果在表上沒有寫鎖定,把一個(gè)讀鎖定放在它上面   
否則,把鎖請(qǐng)求放在讀鎖定隊(duì)列中。

InnoDB使用行鎖定,BDB使用頁(yè)鎖定。對(duì)于這兩種存儲(chǔ)引擎,都可能存在死鎖。這是因?yàn)椋赟QL語句處理期間,InnoDB自動(dòng)獲得行鎖定和BDB獲得頁(yè)鎖定,而不是在事務(wù)啟動(dòng)時(shí)獲得。 

行級(jí)鎖定的優(yōu)點(diǎn):
·         當(dāng)在許多線程中訪問不同的行時(shí)只存在少量鎖定沖突。
·         回滾時(shí)只有少量的更改。
·         可以長(zhǎng)時(shí)間鎖定單一的行。

行級(jí)鎖定的缺點(diǎn):
·         比頁(yè)級(jí)或表級(jí)鎖定占用更多的內(nèi)存。
·         當(dāng)在表的大部分中使用時(shí),比頁(yè)級(jí)或表級(jí)鎖定速度慢,因?yàn)槟惚仨毇@取更多的鎖。
·         如果你在大部分?jǐn)?shù)據(jù)上經(jīng)常進(jìn)行GROUP BY操作或者必須經(jīng)常掃描整個(gè)表,比其它鎖定明顯慢很多。
·         用高級(jí)別鎖定,通過支持不同的類型鎖定,你也可以很容易地調(diào)節(jié)應(yīng)用程序,因?yàn)槠滏i成本小于行級(jí)鎖定。

在以下情況下,表鎖定優(yōu)先于頁(yè)級(jí)或行級(jí)鎖定:
·         表的大部分語句用于讀取。
·         對(duì)嚴(yán)格的關(guān)鍵字進(jìn)行讀取和更新,你可以更新或刪除可以用單一的讀取的關(guān)鍵字來提取的一行:
·                UPDATE tbl_name SET column=value WHERE unique_key_col=key_value;
·                DELETE FROM tbl_name WHERE unique_key_col=key_value;
·         SELECT 結(jié)合并行的INSERT語句,并且只有很少的UPDATE或DELETE語句。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 团风县| 汨罗市| 澳门| 潍坊市| 新龙县| 河南省| 铁岭市| 景宁| 龙山县| 奎屯市| 松溪县| 德令哈市| 兴国县| 佛冈县| 合水县| 定边县| 三台县| 织金县| 乃东县| 苍南县| 汉中市| 揭东县| 昭通市| 阿拉善右旗| 翼城县| 鄂托克前旗| 罗山县| 建水县| 咸丰县| 城市| 昌乐县| 太谷县| 剑阁县| 龙游县| 扎兰屯市| 安丘市| 漠河县| 巨野县| 西充县| 淮北市| 桦甸市|