mysql中的鎖機(jī)制深入講解-創(chuàng)新互聯(lián)

前言

創(chuàng)新互聯(lián)公司專(zhuān)注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、西平網(wǎng)絡(luò)推廣、小程序設(shè)計(jì)、西平網(wǎng)絡(luò)營(yíng)銷(xiāo)、西平企業(yè)策劃、西平品牌公關(guān)、搜索引擎seo、人物專(zhuān)訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們大的嘉獎(jiǎng);創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供西平建站搭建服務(wù),24小時(shí)服務(wù)熱線:028-86922220,官方網(wǎng)址:muchs.cn

為了保證數(shù)據(jù)的一致完整性,任何一個(gè)數(shù)據(jù)庫(kù)都存在鎖定機(jī)制。鎖定機(jī)制的優(yōu)劣直接應(yīng)想到一個(gè)數(shù)據(jù)庫(kù)系統(tǒng)的并發(fā)處理能力和性能,所以鎖定機(jī)制的實(shí)現(xiàn)也就成為了各種數(shù)據(jù)庫(kù)的核心技術(shù)之一。

大概幾個(gè)月之前項(xiàng)目中用到事務(wù),需要保證數(shù)據(jù)的強(qiáng)一致性,期間也用到了mysql的鎖,但當(dāng)時(shí)對(duì)mysql的鎖機(jī)制只是管中窺豹,所以本文打算總結(jié)一下mysql的鎖機(jī)制。

本文主要論述關(guān)于mysql鎖機(jī)制,mysql版本為5.7,引擎為innodb,由于實(shí)際中關(guān)于innodb鎖相關(guān)的知識(shí)及加鎖方式很多,所以沒(méi)有那么多精力羅列所有場(chǎng)景下的加鎖過(guò)程并加以分析,僅根據(jù)現(xiàn)在了解的知識(shí),結(jié)合官方文檔,說(shuō)說(shuō)自己的理解,如果發(fā)現(xiàn)有不對(duì)的地方,歡迎指正。

概述

總的來(lái)說(shuō),InnoDB共有七種類(lèi)型的鎖:

  • 共享/排它鎖(Shared and Exclusive Locks)
  • 意向鎖(Intention Locks)
  • 記錄鎖(Record Locks)
  • 間隙鎖(Gap Locks)
  • 臨鍵鎖(Next-key Locks)
  • 插入意向鎖(Insert Intention Locks)
  • 自增鎖(Auto-inc Locks)

mysql鎖詳解

1. 共享/排它鎖(Shared and Exclusive Locks)

  • 共享鎖(Share Locks,記為S鎖),讀取數(shù)據(jù)時(shí)加S鎖
  • 排他鎖(eXclusive Locks,記為X鎖),修改數(shù)據(jù)時(shí)加X(jué)鎖

使用的語(yǔ)義為:

  • 共享鎖之間不互斥,簡(jiǎn)記為:讀讀可以并行
  • 排他鎖與任何鎖互斥,簡(jiǎn)記為:寫(xiě)讀,寫(xiě)寫(xiě)不可以并行

可以看到,一旦寫(xiě)數(shù)據(jù)的任務(wù)沒(méi)有完成,數(shù)據(jù)是不能被其他任務(wù)讀取的,這對(duì)并發(fā)度有較大的影響。對(duì)應(yīng)到數(shù)據(jù)庫(kù),可以理解為,寫(xiě)事務(wù)沒(méi)有提交,讀相關(guān)數(shù)據(jù)的select也會(huì)被阻塞,這里的select是指加了鎖的,普通的select仍然可以讀到數(shù)據(jù)(快照讀)。

2. 意向鎖(Intention Locks)

InnoDB為了支持多粒度鎖機(jī)制(multiple granularity locking),即允許行級(jí)鎖與表級(jí)鎖共存,而引入了意向鎖(intention locks)。意向鎖是指,未來(lái)的某個(gè)時(shí)刻,事務(wù)可能要加共享/排它鎖了,先提前聲明一個(gè)意向。

1、意向鎖是一個(gè)表級(jí)別的鎖(table-level locking);

2、意向鎖又分為:

  • 意向共享鎖(intention shared lock, IS),它預(yù)示著,事務(wù)有意向?qū)Ρ碇械哪承┬屑庸蚕鞸鎖;
  • 意向排它鎖(intention exclusive lock, IX),它預(yù)示著,事務(wù)有意向?qū)Ρ碇械哪承┬屑优潘黊鎖;

加鎖的語(yǔ)法為:

select ... lock in share mode;  要設(shè)置IS鎖;
select ... for update;       要設(shè)置IX鎖;

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

當(dāng)前名稱:mysql中的鎖機(jī)制深入講解-創(chuàng)新互聯(lián)
文章URL:http://muchs.cn/article36/degcsg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、網(wǎng)站導(dǎo)航、網(wǎng)頁(yè)設(shè)計(jì)公司、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)App設(shè)計(jì)、App開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化