文章詳情頁
mysql優化 - mysql innodb表鎖問題
瀏覽:126日期:2022-06-12 13:08:52
問題描述
經過測試之后,我發現以下情況都會導致表鎖 1.like 2.update,delete無條件的操作 3.update,delete有條件的操作但不是主鍵的操作select無論是有條件還是無條件,條件是不是主鍵或者索引,都不會鎖表,請問這是對的嗎?是不是我測試出現了問題?
問題解答
回答1:select 可指定加各級鎖如共享鎖、排他鎖等,比如select ... FOR UPDATE。至于為什么需要鎖,舉個簡單例子,比如你有個單據繼承自上個單據,這時候你可以select加讀鎖,鎖定上個單據,來防止其他人在你提交前對上個單據進行修改,造成數據不一致。
回答2:只要條件不包含主鍵,或者包含主鍵但不是等號或IN,都會鎖全表的,這就包括了問題中全部3種情況。
不管是鎖全表還是鎖幾行,select加讀鎖,update和delete加寫鎖,至于什么是讀鎖、寫鎖,可Google一下。至于細節,還可以看下事務隔離級別,這里就不展開了。
相關文章:
1. 哪位大神知道MySql怎么修改多行多列的數據?求指點2. mysql服務無法啟動1067錯誤,誰知道正確的解決方法?3. 編輯管理員信息時,為什么沒有修改過的內容會為空?4. PHP類封裝的插入數據,總是插入不成功,返回false;5. 求救一下,用新版的phpstudy,數據庫過段時間會消失是什么情況?6. phpadmin的數據庫,可以設置自動變化時間的變量嗎?就是不需要接收時間數據,自動變化7. APP上傳到電腦服務器,出現數據上傳不完整的問題8. 這是什么情況???9. mysql - thinkphp5 在MAC電腦本地正常,部署LINUX服務器之后,模型不存在10. 老哥們求助啊
排行榜
