Mysql InnoDB行鎖不使用索引鎖表的時候會鎖整張表


 

原文:http://www.thinkphp.cn/topic/41577.html

 

如果使用針對InnoDB的表使用行鎖,被鎖定字段不是主鍵,也沒有針對它建立索引的話。行鎖鎖定的也是整張表。鎖整張表會造成程序的執行效率會很低。
具體測試步驟如下:
1. 創建測試表

注意表類型設置成為InnoDB
2. 插入測試數據

3. 不使用索引的情況,線程1進行查詢結果如下

這時候來啟動另一個查詢窗口,使用線程2進行查詢

發現雖然查詢條件不一樣,但是記錄同樣被鎖死,查詢不到結果,線程1進行事務提交后,線程2顯示查詢結果。所以查詢1進行的不是行鎖而是表鎖。
4. 對nickname字段建立索引

重復步驟3,發現查詢結果顯示出來了,證明有索引的情況下,行鎖生效了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM