91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql鎖和索引之間有何具體的聯系

發布時間:2020-06-01 17:32:29 來源:PHP中文網 閱讀:180 作者:三月 欄目:MySQL數據庫

本篇文章給大家主要講的是關于mysql鎖和索引之間有何具體的聯系的內容,感興趣的話就一起來看看這篇文章吧,相信看完mysql鎖和索引之間有何具體的聯系對大家多少有點參考價值吧。

在平時我們用mysql的鎖時,一般剛接觸數據庫是很少考慮鎖的效率,一般只求到達防止并發的目的就可以了,但是隨著數據量的增大我們就會發現有很多sql我們已經寫的非常優化了,但是有時候還是很慢,很難找到原因,這時候我們就應該考慮一下是不是mysql的鎖在導致的。

我們首先建立一個新的數據表:

mysql鎖和索引之間有何具體的聯系

這里我們的主鍵默認是有索引的;這邊加幾條數據

mysql鎖和索引之間有何具體的聯系

然后我們開兩個進程進行測試:

mysql鎖和索引之間有何具體的聯系

先加一個where條件沒有涉及到索引的鎖:

mysql鎖和索引之間有何具體的聯系

然后我們在第二個窗口進行一個更新這一行的數據,我們會發現這個操作會被卡著,

mysql鎖和索引之間有何具體的聯系

mysql鎖和索引之間有何具體的聯系

然后我們提交事務會發現第二個窗口的數據會立馬執行,

從上面來看似乎沒有任何問題,這樣確實達到了我們想要的目的,但是你可以再加同樣的鎖,試著更新下其他的數據比如我下面執行的數據:mysql鎖和索引之間有何具體的聯系

上面的三種情況都是我用同樣的流程測試的,他們都會被卡住,這樣問題就來了,我們其實在鎖住name='測試姓名'的時候或許只是想鎖住id=133和id=134兩行,我們并不想鎖住135,136,137,但是這三行我們也訪問不了,因為我們的鎖是一個表鎖,我們來試一下另一種用鎖時用到索引的情況:

mysql鎖和索引之間有何具體的聯系

上面用鎖時用到了索引,但是我們在更新數據時還是被卡住了;這里我們就會覺得索引其實也沒什么用,但是你遇到同樣的鎖,更新數據時也用到索引是可以看一下效果:

mysql鎖和索引之間有何具體的聯系

我們會發現這個沒有被鎖卡住,直接更新了;

下面總結一下:如果我們的鎖用到索引就是行鎖,如果沒有用到索引就是表鎖,但是我們操作的數據必須用到鎖才行;

下面我們來說一下為什么會這樣:

首先我們知道如果沒有建立索引的話我們在進行數據選取或者定位的時候是通過全表掃描的形式來進行的,這樣就會形成表鎖,要是有索引的話就會直接定位到指定的行,就是形成行鎖,但是要注意你在更新數據是假如沒用到索引也會全表掃描,當掃到被鎖的這一行是也會被鎖住,所以達不到想要的效果;

以上關于mysql鎖和索引之間有何具體的聯系詳細內容,對大家有幫助嗎?如果想要了解更多相關,可以繼續關注我們的行業資訊板塊。 

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

吉首市| 禹州市| 罗江县| 抚顺市| 曲麻莱县| 香格里拉县| 山东| 长武县| 濮阳县| 永丰县| 定远县| 稷山县| 达拉特旗| 鄂伦春自治旗| 宿松县| 通山县| 瓮安县| 垣曲县| 西城区| 武乡县| 浮梁县| 修武县| 铅山县| 黄梅县| 卫辉市| 虹口区| 临漳县| 通山县| 富裕县| 青川县| 建宁县| 天祝| 宝丰县| 文成县| 山阴县| 湾仔区| 雷山县| 绵竹市| 阿尔山市| 会昌县| 麻栗坡县|