mysql默認的引擎是InnoDB
有如下表:
表中的數據有:
開啟事務(begin),執行更新語句,將'user_name'全部更新為'woxbwo',但不提交(commit)事務:
在事務內查詢:
事物外查詢,新開一個窗口查詢:
可以發現,事務外查到的數據author沒有發生改變
提交事務:
順便測試MySQL插入是表級鎖還是行級鎖
開啟事務,插入數據,但不提交事務
查看事務內數據
查看事務外數據
在另外一個窗口,再次插入一條數據,並查看數據;
再查看事務內數據:
提交事務,並查看。
上述測試過程可以看出,mysql使用innodb引擎時,插入數據(insert)沒有鎖
測試delete和update過程
查看數據:
開啟事務,刪除id=1的行 但不提交數據:
在另外一個窗口也刪除id=1的行,會發生生么樣的情況呢?
會發現處於等待狀態
那么在這種情況下,我們是否能夠刪除其他的行呢,我們再開一個窗口刪除id=2的行,試試
照樣能刪除,說明刪除沒使用表級鎖。
我們提交事務發現:
綜上所屬:delete是使用行級鎖的,update也是實現行級鎖的。同理可測;