原文:http://www.thinkphp.cn/topic/41577.html
如果使用針對InnoDB的表使用行鎖,被鎖定字段不是主鍵,也沒有針對它建立索引的話。行鎖鎖定的也是整張表。鎖整張表會造成程序的執行效率會很低。
具體測試步驟如下:
1. 創建測試表
注意表類型設置成為InnoDB
2. 插入測試數據
3. 不使用索引的情況,線程1進行查詢結果如下
這時候來啟動另一個查詢窗口,使用線程2進行查詢
發現雖然查詢條件不一樣,但是記錄同樣被鎖死,查詢不到結果,線程1進行事務提交后,線程2顯示查詢結果。所以查詢1進行的不是行鎖而是表鎖。
4. 對nickname字段建立索引
重復步驟3,發現查詢結果顯示出來了,證明有索引的情況下,行鎖生效了。