1.業務層面樂觀鎖cas,使用版本號解決aba問題,實際使用中使用時間戳,更新的時候把查出來的時間戳帶上,如果更新失敗可以自旋,獲取最近值和時間戳,直到更新成功。
2.db層面開啟乙個事務,然後select一行for update給這一行加上排它鎖,再去更新行,然後提交,其他事務就會阻塞在select for update。
3.分布式鎖適合競爭不激烈的情況保證一致性,因為效能比較差,按cap理論來講應該是保證了cp放棄了a,zk或者redis保證一致性p,只有拿到鎖的執行緒才能執行,保證一致性c
高併發情況下如何保證冪等性?
冪等性這個概念已經說爛了,就是不管你多少次執行多少次,產生的效果和返回的結果都是一樣的。1,select操作 在資料不變的情況下,select操作多次查詢到的結果都是冪等的。2.刪除操作 刪除語句內容不變的情況下,刪除多次的結果也是一樣的。但是得到返回值不是一樣的。3.唯一索引。為了新增讀髒資料。比...
高併發情況下 如何支撐大量的請求
幾點需要注意 盡量使用快取,包括使用者快取,資訊快取等,多花點記憶體來做快取,可以大量減少與資料庫的互動,提高效能。用jprofiler等工具找出效能瓶頸,減少額外的開銷。優化資料庫查詢語句,減少直接使用hibernate等工具的直接生成語句 僅耗時較長的查詢做優化 優化資料庫結構,多做索引,提高查...
高併發情況下扣除庫存鎖表情況
toc 1.鎖表情景 查詢條件沒有索引時 總結起來就是兩個嚴重問題 1.扣庫存時沒走索引 2.在事務中,調第三方介面 sql create table gap id int,age int,primary key id select from gap insert into test gap id ...