欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mysql共享鎖與排他鎖用法實(shí)例分析

 更新時(shí)間:2019年09月15日 12:04:23   作者:Andy奧  
這篇文章主要介紹了mysql共享鎖與排他鎖用法,結(jié)合實(shí)例形式分析了mysql共享鎖與排他鎖相關(guān)概念、原理、用法及操作注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了mysql共享鎖與排他鎖用法。分享給大家供大家參考,具體如下:

mysql鎖機(jī)制分為表級(jí)鎖和行級(jí)鎖,本文就和大家分享一下我對(duì)mysql中行級(jí)鎖中的共享鎖與排他鎖進(jìn)行分享交流。

共享鎖又稱(chēng)為讀鎖,簡(jiǎn)稱(chēng)S鎖,顧名思義,共享鎖就是多個(gè)事務(wù)對(duì)于同一數(shù)據(jù)可以共享一把鎖,都能訪問(wèn)到數(shù)據(jù),但是只能讀不能修改。

排他鎖又稱(chēng)為寫(xiě)鎖,簡(jiǎn)稱(chēng)X鎖,顧名思義,排他鎖就是不能與其他所并存,如一個(gè)事務(wù)獲取了一個(gè)數(shù)據(jù)行的排他鎖,其他事務(wù)就不能再獲取該行的其他鎖,包括共享鎖和排他鎖,但是獲取排他鎖的事務(wù)是可以對(duì)數(shù)據(jù)就行讀取和修改。

對(duì)于共享鎖大家可能很好理解,就是多個(gè)事務(wù)只能讀數(shù)據(jù)不能改數(shù)據(jù),對(duì)于排他鎖大家的理解可能就有些差別,我當(dāng)初就犯了一個(gè)錯(cuò)誤,以為排他鎖鎖住一行 數(shù)據(jù)后,其他事務(wù)就不能讀取和修改該行數(shù)據(jù),其實(shí)不是這樣的。排他鎖指的是一個(gè)事務(wù)在一行數(shù)據(jù)加上排他鎖后,其他事務(wù)不能再在其上加其他的鎖。mysql InnoDB引擎默認(rèn)的修改數(shù)據(jù)語(yǔ)句,update,delete,insert都會(huì)自動(dòng)給涉及到的數(shù)據(jù)加上排他鎖,select語(yǔ)句默認(rèn)不會(huì)加任何鎖類(lèi) 型,如果加排他鎖可以使用select ...for update語(yǔ)句,加共享鎖可以使用select ... lock in share mode語(yǔ)句。所以加過(guò)排他鎖的數(shù)據(jù)行在其他事務(wù)種是不能修改數(shù)據(jù)的,也不能通過(guò)for update和lock in share mode鎖的方式查詢(xún)數(shù)據(jù),但可以直接通過(guò)select ...from...查詢(xún)數(shù)據(jù),因?yàn)槠胀ú樵?xún)沒(méi)有任何鎖機(jī)制。

說(shuō)了這么多,咱們來(lái)看下以下簡(jiǎn)單的例子:

我們有如下測(cè)試數(shù)據(jù)

現(xiàn)在我們對(duì)id=1的數(shù)據(jù)行排他查詢(xún),這里會(huì)使用begin開(kāi)啟事務(wù),而不會(huì)看見(jiàn)我關(guān)閉事務(wù),這樣做是用來(lái)測(cè)試,因?yàn)樘峤皇聞?wù)或回滾事務(wù)就會(huì)釋放鎖。

打開(kāi)一個(gè)查詢(xún)窗口

會(huì)查詢(xún)到一條數(shù)據(jù),現(xiàn)在打開(kāi)另一個(gè)查詢(xún)窗口,對(duì)同一數(shù)據(jù)分別使用排他查和共享鎖查詢(xún)兩種方式查詢(xún)

排他查

共享查

我們看到開(kāi)了排他鎖查詢(xún)和共享鎖查詢(xún)都會(huì)處于阻塞狀態(tài),因?yàn)閕d=1的數(shù)據(jù)已經(jīng)被加上了排他鎖,此處阻塞是等待排他鎖釋放。

如果我們直接使用以下查詢(xún)呢

我們看到是可以查詢(xún)到數(shù)據(jù)的。

我們?cè)倏匆幌乱粋€(gè)事務(wù)獲取了共享鎖,在其他查詢(xún)中也只能加共享鎖或不加鎖。

我們看到是可以查詢(xún)數(shù)據(jù)的,但加排他鎖就查不到,因?yàn)榕潘i與共享鎖不能存在同一數(shù)據(jù)上。

最后我們驗(yàn)證下上面說(shuō)的mysql InnoDb引擎中update,delete,insert語(yǔ)句自動(dòng)加排他鎖的問(wèn)題,

此時(shí)共享查詢(xún)處于阻塞,等待排它鎖的釋放,但是用普通查詢(xún)能查到數(shù)據(jù),因?yàn)闆](méi)用上鎖機(jī)制不與排他鎖互斥,但查到的數(shù)據(jù)是修改數(shù)據(jù)之前的老數(shù)據(jù)。

然后我們提交數(shù)據(jù),釋放排他鎖看下修改后的數(shù)據(jù),此時(shí)可用排他查,共享查和普通查詢(xún), 因?yàn)槭聞?wù)提交后該行數(shù)據(jù)釋放排他鎖,下面就只顯示普通查詢(xún),其他的同學(xué)們自己去驗(yàn)證。

可以看到結(jié)果與預(yù)期的一樣。

以上為我對(duì)mysql中共享鎖與排他鎖的個(gè)人理解,有不正確的地方還希望各位指正。

更多關(guān)于MySQL相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《MySQL數(shù)據(jù)庫(kù)鎖相關(guān)技巧匯總》、《MySQL存儲(chǔ)過(guò)程技巧大全》、《MySQL常用函數(shù)大匯總》、《MySQL日志操作技巧大全》及《MySQL事務(wù)操作技巧匯總

希望本文所述對(duì)大家MySQL數(shù)據(jù)庫(kù)計(jì)有所幫助。

相關(guān)文章

  • mysql誤刪root用戶(hù)或者忘記root密碼解決方法

    mysql誤刪root用戶(hù)或者忘記root密碼解決方法

    mysql誤刪root用戶(hù)或者忘記root密碼解決方法,需要的朋友可以參考下。
    2011-05-05
  • mysql 5.5 安裝配置圖文教程

    mysql 5.5 安裝配置圖文教程

    這篇文章主要為大家詳細(xì)介紹了mysql5.5安裝配置方法的圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • MYSQL定時(shí)清除備份數(shù)據(jù)的具體操作

    MYSQL定時(shí)清除備份數(shù)據(jù)的具體操作

    這篇文章主要給大家介紹了關(guān)于MYSQL定時(shí)清除備份數(shù)據(jù)的具體操作,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MYSQL具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • MySQL 5.6下table_open_cache參數(shù)優(yōu)化合理配置詳解

    MySQL 5.6下table_open_cache參數(shù)優(yōu)化合理配置詳解

    這篇文章主要介紹了MySQL 5.6下table_open_cache參數(shù)合理配置詳解,需要的朋友可以參考下
    2018-03-03
  • MySql索引使用策略分析

    MySql索引使用策略分析

    這篇文章主要介紹了MySql索引使用策略分析,幫助大家更好的理解和使用MySQL,感興趣的朋友可以了解下
    2020-11-11
  • MySQL 升級(jí)方法指南大全

    MySQL 升級(jí)方法指南大全

    通常,從一個(gè)發(fā)布版本升級(jí)到另一個(gè)版本時(shí),我們建議按照順序來(lái)升級(jí)版本。例如,想要升級(jí) MySQL 3.23 時(shí),先升級(jí)到 MySQL 4.0,而不是直接升級(jí)到 MySQL 4.1 或 MySQL 5.0。
    2008-01-01
  • 為什么說(shuō)MySQL單表數(shù)據(jù)不要超過(guò)500萬(wàn)行

    為什么說(shuō)MySQL單表數(shù)據(jù)不要超過(guò)500萬(wàn)行

    在本篇文章里小編給大家整理了一篇關(guān)于為什么說(shuō)MySQL單表數(shù)據(jù)不要超過(guò)500萬(wàn)行的相關(guān)內(nèi)容,有興趣的朋友們閱讀下吧。
    2019-06-06
  • Mysql中強(qiáng)制索引的具體使用

    Mysql中強(qiáng)制索引的具體使用

    Mysql強(qiáng)制索引可以通過(guò)強(qiáng)制使用某些列的索引來(lái)提高查詢(xún)的性能,本文就來(lái)介紹一下Mysql中強(qiáng)制索引的具體使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-08-08
  • MySQL的23個(gè)需要注意的地方

    MySQL的23個(gè)需要注意的地方

    本文將為大家介紹的是MySQL數(shù)據(jù)庫(kù)的23個(gè)特別注意事項(xiàng),希望各位DBA能從中得到一些啟發(fā)。
    2010-08-08
  • 你知道m(xù)ysql哪些查詢(xún)情況不走索引嗎

    你知道m(xù)ysql哪些查詢(xún)情況不走索引嗎

    索引的種類(lèi)眾所周知,索引類(lèi)似于字典的目錄,可以提高查詢(xún)的效率,下面這篇文章主要給大家介紹了關(guān)于mysql哪些查詢(xún)情況不走索引的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04

最新評(píng)論