mysql優化 - mysql innodb表鎖問題
淡淡烟草味
淡淡烟草味 2017-05-24 11:32:59
0
2
625

經過測試之後,我發現以下情況都會導致表鎖定
1.like
2.update,delete無條件的操作
3.update,delete有條件的操作但不是主鍵的操作
select無論是有條件還是無條件,條件是不是主鍵或索引,都不會鎖定表,請問這是對的嗎?是不是我測試出現了問題?

淡淡烟草味
淡淡烟草味

全部回覆(2)
曾经蜡笔没有小新

select 可指定加上各級鎖如共用鎖、排他鎖等,例如select ... FOR UPDATE
至於為什麼需要鎖,舉個簡單例子,例如你有個單據繼承自上個單據,這時候你可以select加讀鎖,鎖定上個單據,來防止其他人在你提交前對上個單據進行修改,造成數據不一致。

習慣沉默

只要條件不包含主鍵,或包含主鍵但不是等號或IN,都會鎖全表的,這就包括了問題中全部3種情況。

不管是鎖全表還是鎖幾行,select加讀鎖,update和delete加寫鎖,至於什麼是讀鎖、寫鎖,可谷歌一下。至於細節,還可以看下事務隔離等級,這裡就不展開了。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!