gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長資訊網
最全最豐富的資訊網站

深入了解Mysql中的鎖,聊聊使用場景!

本篇文章帶大家了解一下Mysql中的鎖,搞懂共享鎖、排他鎖、悲觀鎖、樂觀鎖,并聊聊使用場景,希望對大家有所幫助!

深入了解Mysql中的鎖,聊聊使用場景!

一、常見鎖類型

  • 表級鎖,鎖定整張表
  • 頁級鎖,鎖定一頁
  • 行級鎖,鎖定一行
  • 共享鎖,也叫S鎖,在MyISAM中也叫讀鎖
  • 排他鎖,也叫X鎖,在MyISAM中也叫寫鎖
  • 悲觀鎖,抽象性質,其實不真實存在
  • 樂觀鎖,抽象性質,其實不真實存在

深入了解Mysql中的鎖,聊聊使用場景!
常見鎖類型

二、Mysql引擎介紹

  • 其實mysql中的引擎有很多種類,其中InnoDB和MyISAM引擎最常用
  • 在mysql5.5版本前默認使用MyISAM引擎,之后使用InnoDB引擎
  • 查看數據庫引擎命令如下
show variables like '%storage_engine%';

三、常用引擎間的區別

  • MyISAM 操作數據都是使用的表鎖,你更新一條記錄就要鎖整個表,導致性能較低,并發不高。當然同時它也不會存在死鎖問題。

  • 而 InnoDB 與 MyISAM 的最大不同有兩點:一是 InnoDB 支持事務;二是 InnoDB 采用了行級鎖。

  • 在 Mysql 中,行級鎖并不是直接鎖記錄,而是鎖索引。索引分為主鍵索引和非主鍵索引兩種,如果一條sql 語句操作了主鍵索引,Mysql 就會鎖定這條主鍵索引;如果一條語句操作了非主鍵索引,MySQL會先鎖定該非主鍵索引,再鎖定相關的主鍵索引。

  • InnoDB 行鎖是通過給索引項加鎖實現的,如果沒有索引,InnoDB 會通過隱藏的聚簇索引來對記錄加鎖。也就是說:如果不通過索引條件檢索數據,那么InnoDB將對表中所有數據加鎖,實際效果跟表鎖一樣。因為沒有了索引,找到某一條記錄就得掃描全表,要掃描全表,就得鎖定表。

四、共享鎖與排他鎖

  • 數據庫的增刪改操作默認都會加排他鎖,而查詢不會加任何鎖。

  • 共享鎖:對某一資源加共享鎖,自身可以讀該資源,其他人也可以讀該資源(也可以再繼續加共享鎖,即 共享鎖可多個共存),但無法修改。要想修改就必須等所有共享鎖都釋放完之后。

  • 排他鎖:對某一資源加排他鎖,自身可以進行增刪改查,其他人無法進行任何操作。

//共享鎖 select * from 表名 lock in share mode  //排他鎖 select * from 表名 for update

五、排他鎖的實際應用

  • 這里我們以兩個操作數據庫的請求為例,假設這兩個請求分別為T1和T2
  • 假設T1為查詢請求,而T2為更新數據請求,在T1查詢很長時間的時候,還沒有返回結果,但是這時候T2過來請求更新了
  • 這個流程應該是: T1運行加共享鎖、T2運行、發現T1未完成等待其完成、T1完成、T2開始執行
  • T2之所以要等待,是因為T2執行更新的時候需要給表加排他鎖,但是數據庫規定,不能在同一資源上同時共存這兩種鎖,所以T2必須等T1執行完,釋放鎖后,才可以正常操作
T1: select * from 表名 lock in share mode //假設還未返回結果  T2: update 表名 set name='autofelix'

六、共享鎖的實際應用

  • 如果T1和T2都是執行的查詢,也就是都加共享鎖
  • 這時候就不用等待,可以立馬執行
  • 因為同一資源上可以同時存在多個共享鎖,也被稱為,共享鎖與共享鎖兼容
  • 意味著共享鎖不阻止其他人同時讀取資源,但是阻止其他人修改資源
T1: select * from table lock in share mode  T2: select * from table lock in share mode

七、死鎖的發生

  • 假設T1和T2都同時執行2個資源操作,分別是查詢和更新數據
  • 假設T1和T2同時達到select,T1對表加共享鎖,而T2也加上了共享鎖
  • 當T1的select執行完畢,準備執行update時
  • 根據鎖機制,T1的共享鎖必須升級到排他鎖才可以執行接下來的update操作
  • 在升級排他鎖之前,必須等T2的共享鎖釋放,同理,T2也在等T1的共享鎖釋放
  • 于是都在等待對方的鎖釋放,導致程序卡死,這種情況就是死鎖
T1: 開啟事務,執行查詢更新兩個操作       select * from table lock in share mode       update table set column1='hello'  T2: 開啟事務,執行查詢更新兩個操作       select * from table lock in share mode       update table set column1='world'

八、另一種發生死鎖的情景

  • 當T1和T2都是只執行更新語句的時候
  • 如下程序所示,這種語句非常的常見,很多人覺得他會產生死鎖,其實要看情況
  • 如果id是主鍵,由于主鍵機制,并不需要全表掃描,直接可以更新當前數據,所以不會產生死鎖
  • 如果id是普通字段,那么當T1加上排他鎖之后,T2為了找到id=20條數據,必須進行全表掃描,當他掃到第10條的時候,發現這里有排他鎖,導致全表掃描進行不下去,就會導致等待
T1: begin      update table set content='hello' where id=10  T2: begin      update table set content='world' where id=20

九、死鎖的解決方式

  • 就是讓T1和T2順序執行,比如T1在執行完select后,立馬給自身加上排他鎖,這樣T2不得不等待T1執行完才能繼續
  • 但是如果有很多請求過來的話,都必須等待,這對用戶特別的不友好
  • 所以,某些數據庫引入了另一種方式,叫做更新鎖,這里mysql除外,不存在更新鎖
  • 更新鎖其實就是排他鎖的另一種實現,只是他允許其他人讀的同時加共享鎖,但是不允許其他操作,除非釋放了更新鎖
  • 流程大概如此: T1執行完select加上更新鎖,T2執行查詢完,準備加更新鎖,發現已經有了,就等待,其他請求過來,如果查詢是不受影響的,但是更新才等待
  • 這相比上面的查詢也要等待增加了效率
T1: begin       select * from table for update       update table set content='hello'  T2: begin       select * from table for update       update table set content='world'
T1: begin       select * from table [加更新鎖操作]       update table set content='hello'  T2: begin       select * from table [加更新鎖操作]       update table set content='world'

十、意向鎖和計劃鎖

  • 計劃鎖與程序猿無關,不需要了解
  • 意向鎖,Innodb特有,分為意向共享鎖和意向排他鎖
  • 意向共享鎖: 表示事務獲取共享鎖時,必須先得獲取該表的意向共享鎖
  • 意向排他鎖: 表示事務獲取排他鎖時,必須先得獲取該表的意向排他鎖
  • 我們知道要對整個表加鎖,必須保證表內不存在任何鎖
  • 如果一行行的去檢查是否加鎖,效率必然極低,這時候可以檢測意向鎖是否被占用即可

十一、樂觀鎖和悲觀鎖

  • 樂觀鎖和悲觀鎖都是針對select而言的
  • 比如在商品搶購中,用戶購買后庫存需要減1,而很多用戶同時購買時,讀出來的庫存數量一樣,然后多個用戶同時用該庫存去減1
  • 這種做法必然會出現很大的漏洞,如果向在淘寶,京東出現這種情況,你就可以打包回家種地了
  • 這種情況如何解決呢,其實可以使用悲觀鎖進行解決,說白了也就是排他鎖
  • 用戶進來查庫存的時候,就加上排他鎖,等他所有操作完成后,再釋放排他鎖,讓其他人進來
  • 不讓用戶等待,就可以使用樂觀鎖方式解決,樂觀鎖一般靠表的設計和時間戳來實現
  • 一般是在表中添加version或者timestamp時間戳字段
  • 這樣就會保證如果更新失敗,就表示有其他程序更新了數據庫,就可以通過重試解決
update table set num=num-1 where id=10 and version=12

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
俄罗斯av网站| 99999精品视频| 黄色aaa级片| 1024av视频| 91精品国产毛片武则天| 色婷婷激情视频| 久久国产激情视频| 亚洲黄色a v| 欧美精品无码一区二区三区| 精品视频在线观看一区| 国产精品三级一区二区| 99中文字幕在线观看| 孩娇小videos精品| 亚洲三级在线观看视频| 亚洲天堂一区二区在线观看| 图片区乱熟图片区亚洲| 久久综合在线观看| 偷拍盗摄高潮叫床对白清晰| 色婷婷一区二区三区在线观看| 一区二区三区四区毛片| 日本久久高清视频| 精品视频免费在线播放| 日日碰狠狠丁香久燥| 日韩不卡一二三| 免费在线精品视频| 国产综合中文字幕| 天天爱天天操天天干| 污污网站在线观看视频| 亚洲区成人777777精品| 国产精品网站免费| 天天爽天天爽夜夜爽| 小早川怜子一区二区三区| av 日韩 人妻 黑人 综合 无码| 黄色a级片免费看| 又色又爽又高潮免费视频国产| 91pony九色| 男人添女荫道口图片| 国产 porn| 日本阿v视频在线观看| 中文字幕无码不卡免费视频| 成人综合久久网| 日韩xxxx视频| 欧美成人手机在线视频| 成人网站免费观看入口| 91精品无人成人www| 日本a级片在线播放| 色综合天天色综合| 国产精品裸体瑜伽视频| 玖玖爱视频在线| 黄色免费视频大全| 日本中文字幕在线不卡| 妞干网在线免费视频| 国产成a人亚洲精v品在线观看| xxx国产在线观看| 黄色av网址在线播放| 日日噜噜夜夜狠狠久久丁香五月| 狠狠热免费视频| 国产h视频在线播放| 青青草影院在线观看| 日本xxxx黄色| 韩国一区二区av| 日韩欧美在线播放视频| 97免费视频观看| 日韩人妻一区二区三区蜜桃视频| 香蕉视频禁止18| 中文久久久久久| 午夜剧场在线免费观看| 欧在线一二三四区| 国产偷人视频免费| 日韩中文字幕在线视频观看| 成人短视频在线观看免费| 欧美一级免费在线| xxxxxx在线观看| 国产精品久久久影院| 欧美在线观看视频免费| 每日在线观看av| 国产免费观看高清视频| 超碰97人人射妻| 国产一区二区在线免费播放| 国产区二区三区| 久久国产激情视频| 手机成人av在线| 91精品国产91久久久久麻豆 主演| 无颜之月在线看| 久久免费视频3| 日韩精品你懂的| 国产精品亚洲天堂| 精品无码一区二区三区在线| 日本在线视频www| 成人高清在线观看视频| 国产 欧美 日本| 欧美精品色婷婷五月综合| 国产一级特黄a大片免费| www.色.com| 农村妇女精品一二区| 国产精品视频黄色| 色婷婷777777仙踪林| 欧美国产亚洲一区| www.污网站| 黄色免费视频大全| 精品91一区二区三区| 欧美 丝袜 自拍 制服 另类| 三级av免费观看| 久久久久久人妻一区二区三区| 亚洲成人av免费看| av在线com| 九九精品久久久| 国产特级黄色大片| 国产精品亚洲天堂| 波多野结衣天堂| 人妻av中文系列| 色撸撸在线观看| 精品久久久久久久无码| 国产欧美123| 男生操女生视频在线观看| 免费一级特黄毛片| 日韩不卡一二区| 日韩av一卡二卡三卡| 波多野结衣作品集| 精品国产免费av| 91传媒免费视频| 久久久久亚洲av无码专区喷水| 9久久婷婷国产综合精品性色| 青春草国产视频| 日韩在线视频在线| 毛毛毛毛毛毛毛片123| 国产色视频在线播放| 各处沟厕大尺度偷拍女厕嘘嘘 | 无套内谢丰满少妇中文字幕| 国产黄色特级片| 国产乱子夫妻xx黑人xyx真爽| 黄色激情在线视频| 国产一线二线三线女| 特级西西444| 亚洲精品国产suv一区88| 亚洲欧美一二三| 欧美人与动牲交xxxxbbbb| 麻豆映画在线观看| 男人添女荫道口喷水视频| 屁屁影院ccyy国产第一页| 青青草综合在线| 国产精品www在线观看| 2018国产在线| 国产又黄又大又粗视频| 青青草原成人网| 一区二区三区视频在线观看免费| 成年人在线观看视频免费| 日本一二区免费| mm131午夜| ww国产内射精品后入国产| 精品久久久噜噜噜噜久久图片 | 小说区视频区图片区| 水蜜桃在线免费观看| 精品少妇在线视频| 青青在线视频观看| 99国产精品久久久久久| 色呦色呦色精品| 超碰超碰超碰超碰超碰| 国产黄色片免费在线观看| 久章草在线视频| 永久av免费在线观看| 黄色一级视频在线播放| 在线免费观看av的网站| 麻豆视频传媒入口| 91看片就是不一样| 色中文字幕在线观看| 国产v片免费观看| 91福利免费观看| 精品国产一区三区| 日韩av影视大全| 亚洲国产精品毛片av不卡在线| 日韩精品视频一二三| 大胆欧美熟妇xx| 亚洲理论中文字幕| 亚洲自偷自拍熟女另类| 日本一区二区免费高清视频| 免费高清在线观看免费| 色爽爽爽爽爽爽爽爽| 日本www高清视频| 成人一级生活片| 91亚洲一区二区| 一区二区三区韩国| 国产免费毛卡片| 久久久久久久久久久99| 欧美激情第四页| 亚洲第一中文av| 国产精品少妇在线视频| 高清欧美精品xxxxx| 黄色录像特级片| 午夜免费看毛片| 欧美日韩亚洲自拍| 国产一区亚洲二区三区| 日韩小视频在线播放| 无码熟妇人妻av在线电影| 五月天综合婷婷| 国产av第一区| 永久免费在线看片视频| 桥本有菜av在线| 欧美另类videosbestsex日本| 国产成人精品免费看在线播放|