Mysql 索引失效以及行鎖油讯,表鎖

mysql 索引失效有以下幾種情況

1详民,or 語(yǔ)句,如果要在or語(yǔ)句中使用索引陌兑,那么所有條件都必須使用索引沈跨,建議盡量少用or語(yǔ)句

2,like 前綴兔综,類(lèi)似語(yǔ)句 ?like '%aa

3,使用索引效率比不使用更低饿凛,比如TYPE

4.索引不存空值狞玛,所以 ?is null 條件語(yǔ)句不使用

5,多列索引涧窒,有預(yù)判心肪,其他索引列失效

6,索引列是字符串杀狡,沒(méi)用使用引號(hào)擴(kuò)起

mysql ?兩種索引方法蒙畴,一種是B-Tree索引,一種是Hash索引

使用場(chǎng)景為值的差異性較大呜象,且以等值比較為條件膳凝,比如> = <用hash效率高

差異性較差,且以范圍為條件恭陡,建議使用B-tree方法蹬音,以為B-Tree支持范圍查找

mysql 對(duì)數(shù)據(jù)的存取和操作系統(tǒng)一樣,通過(guò)鎖控制事務(wù)的有序安全的進(jìn)行休玩,mysql的鎖分為排他所即x鎖和共享鎖即s鎖著淆,當(dāng)數(shù)據(jù)加上排他鎖之后,其他事務(wù)不能對(duì)它進(jìn)行查看修改拴疤,加了共享鎖永部,其他事務(wù)可以進(jìn)行查看,但不能修改呐矾!

死鎖有三種情況

第一種情況苔埋,用戶(hù)1訪問(wèn)表A(鎖住A表),然后訪問(wèn)表B蜒犯,用戶(hù)2组橄,訪問(wèn)表B(鎖住B),然后訪問(wèn)表A,這樣用戶(hù)1等待用戶(hù)2釋放表B上的鎖,用戶(hù)2等待用戶(hù)1釋放表A上的鎖罚随!

解決方法:主要由于邏輯程序bug產(chǎn)生玉工,在事務(wù)的執(zhí)行順序上,如果有多個(gè)資源淘菩,保證代碼執(zhí)行資源順序的一致性遵班,比如事務(wù)A和事務(wù)B都是更新A表后然后執(zhí)行B表,那么都按這個(gè)順序執(zhí)行潮改,如操作A和B兩張表時(shí)费奸,總是按先A后B的順序處理, 必須同時(shí)鎖定兩個(gè)資源時(shí)进陡,要保證在任何時(shí)刻都應(yīng)該按照相同的順序來(lái)鎖定資源。

第二種情況微服,事務(wù)a查詢(xún)一條記錄趾疚,然后準(zhǔn)備更新這條記錄缨历,事務(wù)b進(jìn)行同樣的操作,但由于速度過(guò)快糙麦,事務(wù)a沒(méi)來(lái)來(lái)得及commit,那么事務(wù)a查詢(xún)獲得這條記錄的共享鎖辛孵,并且事務(wù)a準(zhǔn)備更新獲得排他鎖,此時(shí)b同樣獲得該條記錄的共享鎖赡磅,事務(wù)a等待事務(wù)b釋放鎖魄缚,進(jìn)行更新,同樣事務(wù)b等待事務(wù)a執(zhí)行完進(jìn)行更新焚廊,產(chǎn)生死鎖冶匹!場(chǎng)景如下,如果一個(gè)按鈕沒(méi)有失效設(shè)置咆瘟,用戶(hù)一直點(diǎn)嚼隘,就會(huì)出現(xiàn)上述情況

解決方法:1,按鈕點(diǎn)擊置灰

2袒餐,使用悲觀鎖飞蛹,select for update ?在查詢(xún)的時(shí)候就加排他鎖,那么事務(wù)b就不能進(jìn)行查詢(xún)獲得共享鎖

3.使用樂(lè)觀鎖灸眼,在每條數(shù)據(jù)加版本號(hào)version字段卧檐,對(duì)所讀操作的數(shù)據(jù)都不加鎖,事務(wù)a和事務(wù)b第一部查出相應(yīng)的版本號(hào)v焰宣,在更新前在把提交數(shù)據(jù)與數(shù)據(jù)庫(kù)版本比較霉囚,例如,update set where (v+1)>version,如果不大于認(rèn)為過(guò)期就不進(jìn)行更新了

第三種情況

1宛徊,如果使用一條update不滿足條件的sql語(yǔ)句佛嬉,那么行鎖變成了表鎖,比如索引失效情況闸天,用了is null ?或者type建立索引或者使用了like % 暖呕,或者的話where條件里面木有使用索引,那么就變成了全表掃描苞氮,update 語(yǔ)句也變成了表鎖湾揽,那么這樣的事務(wù)過(guò)多,造成死鎖或阻塞笼吟!

mysql innodb 行鎖升級(jí)為表鎖

innodb行鎖機(jī)制是對(duì)索引進(jìn)行加鎖库物,如果索引失效那么升級(jí)為表所

如果沒(méi)有使用索引,那么升級(jí)為表鎖

想要在已被其他事務(wù)用排他鎖占用的資源上面加鎖贷帮,即意向共享鎖戚揭,那么會(huì)行鎖會(huì)升級(jí)為表鎖

mysql ?如何鎖表

myisam引擎:select 進(jìn)行加共享鎖,update加排他鎖

innodb引擎:共享鎖(S):SELECT*FROM table_nameWHERE... LOCK INSHARE MODE

排他鎖(X):SELECT*FROMtable_nameWHERE...FOR UPDATE

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末撵枢,一起剝皮案震驚了整個(gè)濱河市民晒,隨后出現(xiàn)的幾起案子精居,更是在濱河造成了極大的恐慌,老刑警劉巖潜必,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件靴姿,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡磁滚,警方通過(guò)查閱死者的電腦和手機(jī)佛吓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)垂攘,“玉大人维雇,你說(shuō)我怎么就攤上這事∷严停” “怎么了谆沃?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)仪芒。 經(jīng)常有香客問(wèn)我唁影,道長(zhǎng),這世上最難降的妖魔是什么掂名? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任据沈,我火速辦了婚禮,結(jié)果婚禮上饺蔑,老公的妹妹穿的比我還像新娘锌介。我一直安慰自己,他們只是感情好猾警,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布孔祸。 她就那樣靜靜地躺著,像睡著了一般发皿。 火紅的嫁衣襯著肌膚如雪崔慧。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,760評(píng)論 1 289
  • 那天穴墅,我揣著相機(jī)與錄音惶室,去河邊找鬼。 笑死玄货,一個(gè)胖子當(dāng)著我的面吹牛皇钞,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播松捉,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼夹界,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了隘世?” 一聲冷哼從身側(cè)響起可柿,我...
    開(kāi)封第一講書(shū)人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤也拜,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后趾痘,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蔓钟,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年永票,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片滥沫。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡侣集,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出兰绣,到底是詐尸還是另有隱情世分,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布缀辩,位于F島的核電站臭埋,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏臀玄。R本人自食惡果不足惜瓢阴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望健无。 院中可真熱鬧荣恐,春花似錦、人聲如沸累贤。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)臼膏。三九已至硼被,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間讶请,已是汗流浹背祷嘶。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留夺溢,地道東北人蜜猾。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓献联,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子捎废,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容