1. 程式人生 > >mysql for update語句

mysql for update語句

性能優化 多人 innodb 語句 for In mysq 字段 主鍵

我們都知道for update語句會鎖住一張表,鎖表的細節很多人卻不太清楚,下面我們舉例看下。

在表上我們有個索引,如下:

技術分享圖片

現在在我們通過索引store_id鎖表:

技術分享圖片

我們再開一個客戶端,還是鎖住同一個store_id:

技術分享圖片

現在發現表是鎖住的,我們做不了for update,下面我們換一個store_id來鎖表看下:

技術分享圖片

我們看到索引的另一個值是沒有被鎖住的。下面我們再看看不鎖索引,鎖普通自斷:

技術分享圖片

下面我們隨便一個字段再for update:

技術分享圖片

我們看到隨便一行都被鎖了。

總結:

由此我們可以看到,當for update的字段為索引或者主鍵的時候,只會鎖住索引或者主鍵對應的行。

而當for update的字段為普通字段的時候,Innodb會鎖住整張表。

目前關於索引細節的講解我們就告一段落,但有一點做數據要深記,一個好的數據查詢性能優化要從三方面著手,齊頭並進:

1.表結構優化。2.索引優化。3.查詢語句優化

mysql for update語句