MySQL基礎數據庫的鎖機制

      網友投稿 618 2025-04-01

      在并發訪問情況下,很有可能出現不可重復讀等等讀現象。為了更好的應對高并發,封鎖、時間戳、樂觀并發控制(樂觀鎖)、悲觀并發控制(悲觀鎖)都是并發控制采用的主要技術方式。


      ###鎖分類

      ①、按操作劃分:DML鎖,DDL鎖

      ②、按鎖的粒度劃分:表級鎖、行級鎖、頁級鎖

      ③、按鎖級別劃分:共享鎖、排他鎖

      ④、按加鎖方式劃分:自動鎖、顯示鎖

      ⑤、按使用方式劃分:樂觀鎖、悲觀鎖

      ###樂觀鎖和悲觀鎖

      樂觀并發控制和悲觀并發控制是并發控制采用的主要方法。樂觀鎖和悲觀鎖不僅在關系數據庫里應用,在Hibernate、Memcache等等也有相關概念。

      悲觀鎖:也即悲觀并發控制,Pessimistic Concurrency Controller,縮寫PCC。悲觀鎖是指在數據處理過程,使數據處于鎖定狀態,一般使用數據庫的鎖機制實現。

      備注,在Mysql中使用悲觀鎖,必須關閉Mysql的自動提交,set autocommit=0。MySQL默認使用自動提交autocommit模式,也即你執行一個更新操作,MySQL會自動將結果提交。

      //0.開始事務 begin;/begin work;/start transaction; (三者選一就可 //1.查詢出商品信息 select status from t_goods where id=1 for update; //2.根據商品信息生成訂單 insert into t_orders (id,goods_id) values (null,1); //3.修改商品status為2 update t_goods set status=2; //4.提交事務 commit;/commit work;

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      本例子使用select…for update方式將數據鎖住,也就是開啟了排他鎖

      悲觀鎖優缺點:

      悲觀并發控制(悲觀鎖)采用"先取鎖再分"的保守策略,為數據處理提供了安全的保證。但在效率方面,加鎖機制會產生額外的開銷,增加產生死鎖的機會。

      樂觀鎖:相對悲觀鎖來說,樂觀鎖是通過記錄數據版本的方式實現樂觀鎖。為數據增加一個版本標識,讀取數據時,將版本標識一起讀出,數據沒更新一次,就對版本標識進行更新。

      樂觀鎖優缺點:

      MySQL基礎之數據庫的鎖機制

      樂觀鎖認為事務直接競爭的概率是很小的,在提交的時候才鎖定,所以不會產生死鎖。但是如果兩個事務同時讀取數據庫的某一行,這時,就會發現樂觀鎖的弊端。

      ###MySQL常用存儲引擎的鎖機制

      BDB:支持頁級鎖和表級鎖,默認是頁級鎖

      InnoDB:支持行級鎖和表級鎖,默認是行級鎖

      MyISAM &Memory:這兩個存儲引擎都是采用表級鎖

      ###MySQL中排它鎖和共享鎖

      排它鎖(exclusive locck)

      排它鎖又叫寫鎖,如果事務T對A加上排它鎖,則其它事務都不能對A加任何類型的鎖。獲準排它鎖的事務既能讀數據,又能寫數據。

      用法:SELECT … FOR UPDATE

      共享鎖(share lock)

      共享鎖又叫讀鎖,如果事務T對A加上共享鎖,則其它事務只能對A再加共享鎖,不能加其它鎖。獲準共享鎖的事務只能讀數據,不能寫數據。

      用法:SELECT … LOCK IN SHARE MODE;

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

      行級鎖:行級鎖分為共享鎖和排它鎖。行級鎖是Mysql中鎖定粒度最細的鎖。InnoDB引擎支持行級鎖和表級鎖,只有在通過索引條件檢索數據的時候,才使用行級鎖,否就使用表級鎖。行級鎖開銷大,加鎖慢,鎖定粒度最小,發生鎖沖突概率最低,并發度最高

      表級鎖:表級鎖分為表共享鎖和表獨占鎖。表級鎖開銷小,加鎖快,鎖定粒度大、發生鎖沖突最高,并發度最低

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

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

      http://www.hollischuang.com/archives/934

      https://crossoverjie.top/2017/07/09/SSM15/

      MySQL 數據庫

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:[華為云在線課程][7天玩轉MySQL基礎實戰營][day01入門和配置][學習筆記]
      下一篇:WPS表格綠色背景怎么改成白色 WPS表格更換背景方法
      相關文章
      亚洲日本va在线视频观看| 国产亚洲精品美女2020久久| 青青草原亚洲视频| 青青青亚洲精品国产| 中文日韩亚洲欧美制服| 国产成人精品亚洲日本在线| 亚洲理论在线观看| 亚洲国产精品无码久久久| 久久亚洲AV成人无码软件| 久久亚洲精品成人AV| 久久久久亚洲av无码专区导航| 午夜亚洲AV日韩AV无码大全| 久久综合图区亚洲综合图区| 亚洲高清专区日韩精品| 亚洲AV无码成人精品区天堂| 亚洲成人在线电影| 亚洲精品在线网站| 亚洲大尺码专区影院| 亚洲伊人久久大香线蕉结合| 国产午夜亚洲精品国产| 亚洲中文字幕久久无码| 亚洲乱人伦中文字幕无码| 亚洲日韩国产二区无码| 极品色天使在线婷婷天堂亚洲 | 久久久久亚洲AV无码麻豆| 亚洲小视频在线观看| 亚洲精品电影天堂网| 亚洲冬月枫中文字幕在线看| 亚洲第一男人天堂| 亚洲精品欧美综合四区| 无码国产亚洲日韩国精品视频一区二区三区 | 亚洲人成色77777在线观看| 亚洲AV永久无码精品放毛片| 国产亚洲人成在线影院| 国内精品久久久久久久亚洲| 亚洲AV无码一区东京热| 亚洲欧洲春色校园另类小说| 亚洲午夜无码久久久久小说| 日韩在线视精品在亚洲| 亚洲午夜久久久久妓女影院| 亚洲天堂中文字幕|