本文介紹的時關於更新語句會鎖表的原因及解決方案。
一、現象
當多個連接同時對一個表的數據進行更新操作,那么速度將會越來越慢,持續一段時間后將出現數據表被鎖,從而影響到其它的查詢及更新。
update Order set state = 2 where oId=1 and state = 1
二、原因分析
MySQL的innodb存儲引擎支持行級鎖,innodb的行鎖是通過給索引項加鎖實現的,這就意味着只有通過索引條件檢索數據時,innodb才使用行鎖,否則使用表鎖。
而我並沒有添加索引,所以導致數據表被鎖。
三、解決辦法
給 oId 添加索引。