回覆列表
  • 1 # 網際網路技能圖譜

    高併發最可能遇到的就是思索問題了。

    首先根據業務確定使用的什麼隔離級別,一般要麼是確認讀,要麼是可重複讀。

    確認讀有可能兩次讀的資料不一致

    可重複讀也叫快照讀,能確保每次讀的資料一致,但不保證能讀到最新commit的資料。

    其次要考慮更新語句是否會產生死鎖,要確認表中相關欄位都有什麼鎖。

    主鍵:主鍵索引上鎖,資料行上鎖

    唯一索引:索引上鎖,主鍵索引上鎖,資料行上鎖

    普通索引:會鎖住所有符合條件的索引和行,還會上間隙鎖

    無索引:會鎖全表,逐漸釋放不符合條件的鎖

    因此要儘可能只鎖需要的行,避免不同事務鎖住互相需要的行,造成死鎖。

  • 2 # 使用者993866542822

    1.最佳化資料結構,每張資料表字段4-5個,加上索引。還可以將不同的種類的資料存入不同的資料庫。減少單個數據庫的壓力。

    2.寫入資料只是存的問題,問題在於讀取資料會變慢。建議使用快取memcache,redis在向你招收哦。將使用者資料存入記憶體,再次讀取避免從資料庫查詢。

    3.分散式,搞叢集,擴大配置。

  • 3 # 使用者540603506501400

    可以用樂觀鎖方案解決

    1.在表裡增加個欄位,版本號

    2.每次更新前先從資料庫裡獲取這個版本號的值,然後更新時要同步更新版本號+1,並且增加更新條件版本號=查詢出來的值。

    3.因為更新時每次只可能有一個執行緒更新到資料,等到另外一個執行緒再去更新資料的時候版本號已經+1了,所以會更新失敗,重新獲取版本號再走更新流程,這樣就解決了多執行緒併發更新被覆蓋的問題。 而且樂觀鎖機制避免了長事務中的資料庫加鎖開銷(多個執行緒操作過程中,都沒有對資料庫資料加鎖),大大提升了大併發量下的系統整體效能表現。

  • 中秋節和大豐收的關聯?
  • 喜歡看羽毛球但不會打,請問巔峰時期的陶菲克和林丹誰更厲害?