mysql事務測試及delete和update是使用行級鎖,還是表級鎖


mysql默認的引擎是InnoDB

有如下表:

表中的數據有:

開啟事務(begin),執行更新語句,將'user_name'全部更新為'woxbwo',但不提交(commit)事務:

在事務內查詢:

事物外查詢,新開一個窗口查詢:

可以發現,事務外查到的數據author沒有發生改變

提交事務:

順便測試MySQL插入是表級鎖還是行級鎖

開啟事務,插入數據,但不提交事務

查看事務內數據

查看事務外數據

在另外一個窗口,再次插入一條數據,並查看數據;

再查看事務內數據:

提交事務,並查看。

上述測試過程可以看出,mysql使用innodb引擎時,插入數據(insert)沒有鎖

測試delete和update過程

查看數據:

開啟事務,刪除id=1的行 但不提交數據:

在另外一個窗口也刪除id=1的行,會發生生么樣的情況呢?

會發現處於等待狀態

那么在這種情況下,我們是否能夠刪除其他的行呢,我們再開一個窗口刪除id=2的行,試試

照樣能刪除,說明刪除沒使用表級鎖。

我們提交事務發現:

綜上所屬:delete是使用行級鎖的,update也是實現行級鎖的。同理可測;

 


免責聲明!

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



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