兩個併發的事務 , 基於同乙個查詢進行更新操作 ,後提交的事務忽略了先提交的事務對資料庫的影響 , 結果造成了資料庫操作失誤的問題, 稱之為更新丟失。
重複充值
秒殺搶購
商品刪除
將資料庫隔離級別提公升為serializable級別防止更新丟失的問題
效率極低 , 不推薦使用
悲觀鎖
悲觀的認為每次查詢都會造成更新丟失問題 , 所以在查詢時 , 手動新增排它鎖 , 排斥後續其他事務的更新操作 。
在查詢時關鍵查詢語句後加 for update; 。
樂觀鎖
樂觀的認為每次查詢都不會有更新丟失問題 , 在修改時 , 人為地檢測更新丟失的發生 。
在更新 操作時帶上查詢結果 , 把查詢結果作為條件之一 , 如果影響行數為0 , 則發生更新丟失 , 此時需要回滾事務重新執行(是否需要重新執行看具體的場景)。
悲觀鎖和樂觀鎖都不是資料庫中真正存在的鎖 , 而是兩種解決方案的思想
如果更新多而查詢少, 使用悲觀鎖
如果更新少而查詢多, 使用樂觀鎖
資料庫 丟失更新
丟失更新是資料中乙個比較常見的經典問題,在做專案時我們有時可能會沒有注意到這個問題,但這個問題相當重要,有時會帶來比較嚴重的結果。下面我們就來討論下這個丟失更新。一 什麼是丟失更新 用乙個操作過程來說明 1 會話session1 中的乙個事務獲取 查詢 一行資料,並顯示給乙個使用者user1.2 會...
大資料知識階段總結(一)
一 rdd常用運算元再次實驗 1 準備20 30秒的自我介紹,有特色些的 2 畫出你們的大資料架構,針對架構提問,如何做到精準一次 小檔案規避?3 畫出yarn的工作流程?4 你們使用的spark執行模式?5 yarn的排程有哪幾種?你們用的是哪幾種?如果申請的資源,在yarn的佇列裡資源不夠,怎麼...
大資料在公司使用的階段
雖然大家都在玩大資料,但是大部分人還是在第1和2階段,部分公司可能到了第3階段,因為其中涉及的專業知識太多,運維工程師,開發工程師,資料工程師,雲工程師等等不一而足。在此階段,你的團隊可能會安裝乙個hadoop集群和hive 可能帶有sqoop 以便將一些資料傳輸到集群並執行一些查詢。近年來,包括k...