IT技術互(hu)動交流平jiao)tai)

上海福彩网官网

作(zuo)者︰StudyBlog  來源︰IT165收集  發(fa)布日期︰2020-02-26 01:47:31

上海福彩网官网

    mysql的InnoDB,支持事務和行級鎖,可以(yi)使用行鎖來處理(li)用mei) 嵯值紉滴瘛J褂ysql鎖的時(shi)候有(you)時(shi)候會(hui)出現死鎖,要(yao)做好死鎖的預防(fang)。

  二、MySQL行級鎖

    行級鎖又分(fen)共享鎖和排他鎖。

    共享鎖︰

      名詞shi)饈停汗蠶硭紙jiao)做讀鎖,所(suo)有(you)的事務只能對其進行讀操作(zuo)不能寫(xie)操作(zuo),加上共享鎖後其他事務不能再加排他鎖了只能加you)屑端/p>

      用法︰SELECT `id` FROM  table WHERE id in(1,2)   LOCK IN SHARE MODE 結(jie)果集的數(shu)據都會(hui)加共享鎖

    排他鎖︰

      名詞shi)饈停喝裟掣鍪攣wu)對某一行加上了排他鎖,只能這個事務對其進行讀lie)矗 淥攣癲荒芏雲浣屑尤魏he)鎖,其他進程可以(yi)讀取,不能進行寫(xie)操作(zuo),需等待(dai)其釋放。

      用法︰SELECT `id` FROM mk_user WHERE id=1 FOR UPDATE

上海福彩网官网

<?php $uid=$_SESSION['uid']; //開啟事務 sql:begin //開啟行級鎖的排他鎖 sql:SELECT `coin` FROM user WHERE id=$uid FOR UPDATE  //扣除用mei)?嘶 qian)幣 $res=update user set coin=coin-value where id=1; if($res){  //將用mei)?奶嵯中畔xi)添加到jiao)嵯直 sql:insert into user values(null,'{$uid}',value);  //判(pan)斷添加結(jie)果  if(add_cash_result){  sql:commit  }else{  sql:rollback  } }else{  sql:rollback; }

    其實步驟不復雜,就是qiang) 羰攣衽pan)斷各個結(jie)果為真(zhen)就提交為假(jia)就回(hui)滾。單個排他鎖沒(mei)有(you)什(shi)麼問題,當一個表關聯到多個排他鎖的時(shi)候要(yao)注意防(fang)止發(fa)生死鎖。

上海福彩网官网

    `id`  主鍵索引

    `name` index 索引

    `age`  普通字段

    死鎖產生的根本原因是兩(liang)個以(yi)上xi)慕潭家yao)求對方(fang)釋放資源,以(yi)至于(yu)進程都一直等待(dai)。在(zai)代碼上是因為兩(liang)個或者以(yi)上xi)氖攣穸家yao)求另一個釋放資源。

    死鎖產生的四(si)個必要(yao)條件︰互(hu)斥條件、環路條件、請求保持、不可剝奪,缺(que)一不可,相(xiang)對應的只要(yao)破壞其中一種條件死鎖就不會(hui)產生。

    例如下面兩(liang)條語句 第一條語句會(hui)優先使用`name`索引,因為name不是主鍵索引,還會(hui)用到主鍵索引

    第二條語句是首先使用主鍵索引,再使用name索引 如果兩(liang)條語句同時(shi)執行,第一條語句執行了name索引等待(dai)第二條釋放主鍵索引,第二條執行了主鍵索引等待(dai)第一條的name索引,這樣(yang)就造成了死鎖。

    解決方(fang)法︰改(gai)造第一條語句 使其根據主鍵值進行更新
    

#?update mk_user set name ='1' where `name`='idis12';#?update mk_user set name='12' where id=12;//改(gai)造後update mk_user set name='1' where id=(select id from mk_user where name='idis12' );

  

Tag標簽︰死鎖  
  • 上海福彩网官网

About IT165 - 廣告(gao)服務 - 隱私聲明 - 版權申明 - 免(mian)責條款 - 網站地圖 - 網友投(tou)稿 - 聯系(xi)方(fang)式(shi)
本站內容來自于(yu)互(hu)聯網,僅供(gong)用于(yu)網絡技術學習,學習中請遵循(xun)相(xiang)關法律法規
上海福彩网官网 | 下一页