更新丟失:新改的覆蓋先改的,開發中有三種方法解決
1、將事務級別提高到最高端別
transaction_serializable
操作雙方都要提公升級別;查詢使用共享鎖;更新使用更新鎖;一方查詢,一方更新,共享鎖和更新鎖會衝突;當雙方更新鎖,出現死鎖,程式會自動回滾一方操作,從而避免更新丟失
2、悲觀鎖(加的是表級鎖)
一方:查詢語句加forupdate;
另一方:查詢語句加
forupdate;
當進行更新語句的時候,另一方不能進行更新操作
3、樂觀鎖
更新語句設定版本號,在指定版本中更新資料
一方:updateaccountsetmoney=money-200,
version=version+1whereid=1andversion=0;
另一方操作同乙個版本號,則不能更新資料
另一方:updateaccountsetmoney=money+200,
如果更新多,查詢少,用悲觀鎖;反之,樂觀鎖
表級鎖,where
用的是非主鍵
行級鎖,where
用主鍵一般是id
如果用表級鎖,其他客戶將不能進行查詢操作,因此開發中記得用行級鎖
悲觀鎖 樂觀鎖 行級鎖 表級鎖
更新丟失 新改的覆蓋先改的,開發中有三種方法解決 1 將事務級別提高到最高端別 transaction serializable 操作雙方都要提公升級別 查詢使用共享鎖 更新使用更新鎖 一方查詢,一方更新,共享鎖和更新鎖會衝突 當雙方更新鎖,出現死鎖,程式會自動回滾一方操作,從而避免更新丟失 2 悲...
悲觀鎖 樂觀鎖 行級鎖 表級鎖
更新丟失 新改的覆蓋先改的,開發中有三種方法解決 1 將事務級別提高到最高端別 transaction serializable 操作雙方都要提公升級別 查詢使用共享鎖 更新使用更新鎖 一方查詢,一方更新,共享鎖和更新鎖會衝突 當雙方更新鎖,出現死鎖,程式會自動回滾一方操作,從而避免更新丟失 2 悲...
悲觀鎖 樂觀鎖 行級鎖 表級鎖
更新丟失 新改的覆蓋先改的,開發中有三種方法解決 1 將事務級別提高到最高端別 transaction serializable 操作雙方都要提公升級別 查詢使用共享鎖 更新使用更新鎖 一方查詢,一方更新,共享鎖和更新鎖會衝突 當雙方更新鎖,出現死鎖,程式會自動回滾一方操作,從而避免更新丟失 2 悲...