mysql之表鎖和索引失效

1、mysql InnoDB引擎默認的是行鎖,那麼什麼情況下導致表鎖?

行鎖是根據索引查找到那行,找到那幾行進行鎖定,纔可以進行更新。所以產生表鎖有可能是要麼沒有索引,要麼就是索引失效。

2、索引失效的幾種。

1、主鍵索引 ,where 字段 like 以%開頭。

2、組合(複合)索引 ,沒有遵循最左匹配原則。

 ALTER TABLE `table` ADD INDEX name_city_age (name,city,age);

 select * from table where city=xxx and age = xxx;

這種情況下組合索引是不會起作用的,因爲第一個name沒有作爲條件,在B+樹裏邊根本找不到對應的行,所以只好全表掃描,後續更新,mysql鎖的就是整張表了。

3、壓根沒有主鍵還有索引。

4、where or 所有條件必須添加索引。

5、對索引使用了函數。

3、索引排查 ====explain

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章