<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        MySQL中的行級鎖、表級鎖、頁級鎖

        來源:懂視網 責編:小采 時間:2020-11-09 20:52:40
        文檔

        MySQL中的行級鎖、表級鎖、頁級鎖

        MySQL中的行級鎖、表級鎖、頁級鎖:在計算機科學中,鎖是在執行多線程時用于強行限制資源訪問的同步機制,即用于在并發控制中保證對互斥要求的滿足。 在DBMS中,可以按照鎖的粒度把數據庫鎖分為行級鎖(INNODB引擎)、表級鎖(MYISAM引擎)和頁級鎖(BDB引擎 )。 一、行級鎖 行級鎖是Mysql中鎖
        推薦度:
        導讀MySQL中的行級鎖、表級鎖、頁級鎖:在計算機科學中,鎖是在執行多線程時用于強行限制資源訪問的同步機制,即用于在并發控制中保證對互斥要求的滿足。 在DBMS中,可以按照鎖的粒度把數據庫鎖分為行級鎖(INNODB引擎)、表級鎖(MYISAM引擎)和頁級鎖(BDB引擎 )。 一、行級鎖 行級鎖是Mysql中鎖

        在計算機科學中,鎖是在執行多線程時用于強行限制資源訪問的同步機制,即用于在并發控制中保證對互斥要求的滿足。

        在DBMS中,可以按照鎖的粒度把數據庫鎖分為行級鎖(INNODB引擎)、表級鎖(MYISAM引擎)和頁級鎖(BDB引擎 )。

        一、行級鎖

        行級鎖是Mysql中鎖定粒度最細的一種鎖,表示只針對當前操作的行進行加鎖。行級鎖能大大減少數據庫操作的沖突。其加鎖粒度最小,但加鎖的開銷也最大。行級鎖分為共享鎖 和 排他鎖。

        特點

        開銷大,加鎖慢;會出現死鎖;鎖定粒度最小,發生鎖沖突的概率最低,并發度也最高。

        二、表級鎖

        表級鎖是MySQL中鎖定粒度最大的一種鎖,表示對當前操作的整張表加鎖,它實現簡單,資源消耗較少,被大部分MySQL引擎支持。最常使用的MYISAM與INNODB都支持表級鎖定。表級鎖定分為表共享讀鎖(共享鎖)與表獨占寫鎖(排他鎖)。

        特點

        開銷小,加鎖快;不會出現死鎖;鎖定粒度大,發出鎖沖突的概率最高,并發度最低。

        三、頁級鎖

        表級鎖是MySQL中鎖定粒度介于行級鎖和表級鎖中間的一種鎖.表級鎖速度快,但沖突多,行級沖突少,但速度慢。所以取了折衷的頁級,一次鎖定相鄰的一組記錄。BDB支持頁級鎖

        特點

        開銷和加鎖時間界于表鎖和行鎖之間;會出現死鎖;鎖定粒度界于表鎖和行鎖之間,并發度一般

        MySQL常用存儲引擎的鎖機制

      1. MyISAM和MEMORY采用表級鎖(table-level locking)
      2. BDB采用頁面鎖(page-level locking)或表級鎖,默認為頁面鎖
      3. InnoDB支持行級鎖(row-level locking)和表級鎖,默認為行級鎖
      4. 四、Innodb中的行鎖與表鎖

        前面提到過,在Innodb引擎中既支持行鎖也支持表鎖,那么什么時候會鎖住整張表,什么時候或只鎖住一行呢?

        InnoDB行鎖是通過給索引上的索引項加鎖來實現的,這一點MySQL與Oracle不同,后者是通過在數據塊中對相應數據行加鎖來實現的。InnoDB這種行鎖實現特點意味著:只有通過索引條件檢索數據,InnoDB才使用行級鎖,否則,InnoDB將使用表鎖!

        在實際應用中,要特別注意InnoDB行鎖的這一特性,不然的話,可能導致大量的鎖沖突,從而影響并發性能。

        行級鎖都是基于索引的,如果一條SQL語句用不到索引是不會使用行級鎖的,會使用表級鎖。行級鎖的缺點是:由于需要請求大量的鎖資源,所以速度慢,內存消耗大。

        五、行級鎖與死鎖

        MyISAM中是不會產生死鎖的,因為MyISAM總是一次性獲得所需的全部鎖,要么全部滿足,要么全部等待。而在InnoDB中,鎖是逐步獲得的,就造成了死鎖的可能。

        在MySQL中,行級鎖并不是直接鎖記錄,而是鎖索引。索引分為主鍵索引和非主鍵索引兩種,如果一條sql語句操作了主鍵索引,MySQL就會鎖定這條主鍵索引;如果一條語句操作了非主鍵索引,MySQL會先鎖定該非主鍵索引,再鎖定相關的主鍵索引。 在UPDATE、DELETE操作時,MySQL不僅鎖定WHERE條件掃描過的所有索引記錄,而且會鎖定相鄰的鍵值,即所謂的next-key locking。

        當兩個事務同時執行,一個鎖住了逐漸索引在等待其他相關索引,一個鎖定了非主鍵索引,在等待主鍵索引。這樣就會發生死鎖。

        發生死鎖后,InnoDB一般都可以檢測到,并使一個事務釋放鎖回退,另一個獲取鎖完成事務。

        有多種方法可以避免死鎖,這里只介紹常見的三種,具體如下

        1、如果不同程序會并發存取多個表,盡量約定以相同的順序訪問表,可以大大降低死鎖機會。

        2、在同一個事務中,盡可能做到一次鎖定所需要的所有資源,減少死鎖產生概率;

        3、對于非常容易產生死鎖的業務部分,可以嘗試使用升級鎖定顆粒度,通過表級鎖定來減少死鎖產生的概率;

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        MySQL中的行級鎖、表級鎖、頁級鎖

        MySQL中的行級鎖、表級鎖、頁級鎖:在計算機科學中,鎖是在執行多線程時用于強行限制資源訪問的同步機制,即用于在并發控制中保證對互斥要求的滿足。 在DBMS中,可以按照鎖的粒度把數據庫鎖分為行級鎖(INNODB引擎)、表級鎖(MYISAM引擎)和頁級鎖(BDB引擎 )。 一、行級鎖 行級鎖是Mysql中鎖
        推薦度:
        標簽: mysql mysql中
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 色噜噜亚洲男人的天堂| 亚洲免费在线视频| 亚洲国产成人无码AV在线影院| 亚洲国产精品免费在线观看| 麻豆亚洲AV永久无码精品久久 | 国产无人区码卡二卡三卡免费 | 野花高清在线电影观看免费视频| 亚洲精品中文字幕无码AV| 95老司机免费福利| 亚洲色大成网站www永久| 国产成人精品免费视| youjizz亚洲| 日韩视频免费一区二区三区| 亚洲国产成人AV网站| 男人的天堂亚洲一区二区三区 | 亚洲精品国产日韩| 成人人免费夜夜视频观看| 午夜亚洲国产理论片二级港台二级| 国产精品成人无码免费| 国产美女视频免费观看的网站| 亚洲国产一成人久久精品| 1000部啪啪毛片免费看| 欧美激情综合亚洲一二区| 亚洲精品综合久久| 亚欧免费一级毛片| 亚洲一区二区观看播放| 亚洲精品偷拍视频免费观看| 久久久国产精品福利免费| jlzzjlzz亚洲jzjzjz| 亚洲欧洲精品成人久久奇米网 | 在线看片v免费观看视频777| 亚洲色大成网站www| 精品亚洲成α人无码成α在线观看| 久久精品一区二区免费看| 亚洲中文字幕乱码AV波多JI| 亚洲中文字幕无码爆乳av中文| 永久免费在线观看视频| 午夜亚洲WWW湿好爽| 老色鬼久久亚洲AV综合| 国产成人免费福利网站| 久99久精品免费视频热77|