文章詳情頁
mysql優(yōu)化 - mysql innodb表鎖問題
瀏覽:104日期:2022-06-12 13:08:52
問題描述
經(jīng)過測試之后,我發(fā)現(xiàn)以下情況都會導(dǎo)致表鎖 1.like 2.update,delete無條件的操作 3.update,delete有條件的操作但不是主鍵的操作select無論是有條件還是無條件,條件是不是主鍵或者索引,都不會鎖表,請問這是對的嗎?是不是我測試出現(xiàn)了問題?
問題解答
回答1:select 可指定加各級鎖如共享鎖、排他鎖等,比如select ... FOR UPDATE。至于為什么需要鎖,舉個簡單例子,比如你有個單據(jù)繼承自上個單據(jù),這時候你可以select加讀鎖,鎖定上個單據(jù),來防止其他人在你提交前對上個單據(jù)進(jìn)行修改,造成數(shù)據(jù)不一致。
回答2:只要條件不包含主鍵,或者包含主鍵但不是等號或IN,都會鎖全表的,這就包括了問題中全部3種情況。
不管是鎖全表還是鎖幾行,select加讀鎖,update和delete加寫鎖,至于什么是讀鎖、寫鎖,可Google一下。至于細(xì)節(jié),還可以看下事務(wù)隔離級別,這里就不展開了。
相關(guān)文章:
1. 跨類調(diào)用后,找不到方法2. 編輯成功不顯示彈窗3. sql語句 - 如何在mysql中批量添加用戶?4. 在應(yīng)用配置文件 app.php 中找不到’route_check_cache’配置項5. mysql - 表名稱前綴到底有啥用?6. 為什么php修改數(shù)據(jù)無法同步到數(shù)據(jù)庫,只是當(dāng)前頁面修改成功?7. 哭遼 求大佬解答 控制器的join方法怎么轉(zhuǎn)模型方法8. 怎么php怎么通過數(shù)組顯示sql查詢結(jié)果呢,查詢結(jié)果有多條,如圖。9. 在mybatis使用mysql的ON DUPLICATE KEY UPDATE語法實現(xiàn)存在即更新應(yīng)該使用哪個標(biāo)簽?10. wamp中的mySQL可以單獨使用嗎
排行榜

熱門標(biāo)簽