久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術(shù)文章
文章詳情頁

MySQL數(shù)據(jù)庫鎖機(jī)制原理解析

瀏覽:134日期:2023-10-08 09:31:24

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

鎖分類

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

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

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

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

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

樂觀鎖和悲觀鎖

樂觀并發(fā)控制和悲觀并發(fā)控制是并發(fā)控制采用的主要方法。樂觀鎖和悲觀鎖不僅在關(guān)系數(shù)據(jù)庫里應(yīng)用,在Hibernate、Memcache等等也有相關(guān)概念。

悲觀鎖:也即悲觀并發(fā)控制,Pessimistic Concurrency Controller,縮寫PCC。悲觀鎖是指在數(shù)據(jù)處理過程,使數(shù)據(jù)處于鎖定狀態(tài),一般使用數(shù)據(jù)庫的鎖機(jī)制實現(xiàn)。

備注,在MySQL中使用悲觀鎖,必須關(guān)閉MySQL的自動提交,set autocommit=0。MySQL默認(rèn)使用自動提交autocommit模式,也即你執(zhí)行一個更新操作,MySQL會自動將結(jié)果提交。

例如:使用select...for update方式將數(shù)據(jù)鎖住,也就是開啟了排他鎖

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

悲觀鎖

優(yōu)點:悲觀鎖利用數(shù)據(jù)庫中的鎖機(jī)制來實現(xiàn)數(shù)據(jù)變化的順序執(zhí)行,這是最有效的辦法

缺點:加鎖機(jī)制會產(chǎn)生額外的開銷,增加產(chǎn)生死鎖的機(jī)會。一個事務(wù)用悲觀鎖對數(shù)據(jù)加鎖之后,其他事務(wù)將不能對加鎖的數(shù)據(jù)進(jìn)行除了查詢以外的所有操作,如果該事務(wù)執(zhí)行時間很長,那么其他事務(wù)將一直等待,那勢必影響我們系統(tǒng)的吞吐量。

樂觀鎖

優(yōu)點:樂觀鎖不在數(shù)據(jù)庫上加鎖,任何事務(wù)都可以對數(shù)據(jù)進(jìn)行操作,在更新時才進(jìn)行校驗,這樣就避免了悲觀鎖造成的吞吐量下降的劣勢。

缺點:樂觀鎖因為是通過我們?nèi)藶閷崿F(xiàn)的,它僅僅適用于我們自己業(yè)務(wù)中,如果有外來事務(wù)插入,那么就可能發(fā)生錯誤。

MySQL常用存儲引擎的鎖機(jī)制 BDB:支持頁級鎖和表級鎖,默認(rèn)是頁級鎖 InnoDB:支持行級鎖和表級鎖,默認(rèn)是行級鎖 MyISAM &Memory:這兩個存儲引擎都是采用表級鎖

MySQL中排它鎖和共享鎖

排它鎖(exclusive locck)

排它鎖又叫寫鎖,如果事務(wù)T對A加上排它鎖,則其它事務(wù)都不能對A加任何類型的鎖。獲準(zhǔn)排它鎖的事務(wù)既能讀數(shù)據(jù),又能寫數(shù)據(jù)。

用法:SELECT ... FOR UPDATE

共享鎖(share lock)

共享鎖又叫讀鎖,如果事務(wù)T對A加上共享鎖,則其它事務(wù)只能對A再加共享鎖,不能加其它鎖。獲準(zhǔn)共享鎖的事務(wù)只能讀數(shù)據(jù),不能寫數(shù)據(jù)。

用法:SELECT ... LOCK IN SHARE MODE;

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

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

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

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

開銷和加鎖時間界于表鎖和行鎖之間;會出現(xiàn)死鎖;鎖定粒度界于表鎖和行鎖之間,并發(fā)度一般

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: MySQL 數(shù)據(jù)庫
相關(guān)文章:
主站蜘蛛池模板: japanhd熟睡侵犯 | 欧美久久成人 | 久久久性色精品国产免费观看 | 国产成人一区二区三区 | 国外成人在线视频网站 | 黄色免费网址大全 | 91中文字幕在线观看 | 成人二区 | 亚洲国产精品久久久久久 | 日韩在线观看中文字幕 | 久久免费小视频 | 日韩av在线中文字幕 | 日韩精品视频免费专区在线播放 | 自拍偷拍欧美 | 这里有精品在线视频 | 午夜成人免费电影 | 国产精品欧美久久久久一区二区 | www97影院| 久久精品综合 | 国产小视频在线播放 | 亚洲欧美国产精品久久 | 日韩视频不卡 | 日韩欧美在线免费观看 | 夜夜春精品视频高清69式 | 日韩精品免费观看 | 国产一区二区三区视频 | 国产精品久久久久久亚洲影视 | 国产精品久久久久久久电影 | 一区在线视频 | 亚洲毛片在线观看 | 中文字幕亚洲一区 | 日韩爱爱网址 | 日韩视频在线一区二区 | 91成人精品视频 | 亚洲一区二区三区四区五区午夜 | www,99热 | 亚洲欧美日韩电影 | 国产欧美一二三区在线粉嫩 | 综合久久久 | 亚洲欧美在线一区 | 97国产精品久久久 |