Duplicate entry for key 'PRIMARY'

直播網站的外嵌功能,客戶將我們的直播嵌入到他們的網頁,而他們的網頁進行了點贊活動,有人進行刷票導致併發量

特別大。這時候由於直播網站在嵌入頁面也加入了遊客身份信息,導致了錯誤:Duplicate entry for key 'PRIMARY'。


先明確一下我們的業務流程。用戶進入直播頁面,當用戶未登錄時就是遊客身份,就會自動生成一條遊客信息插入遊客表。

遊客表是共享的,用戶關閉網頁就會將佔用的遊客記錄釋放,只有系統裏的遊客數量超過數據庫中的遊客記錄數,纔會

去生成遊客。爲了區分遊客和會員,遊客表使用了負數id作爲主鍵,並不是自增主鍵。由於系統使用了兩臺服務器,當併發

量較大時,一臺服務器創建了一條遊客記錄,而另一臺服務器也想創建相同id的記錄導致了以上的錯誤。


具體爲什麼會出現兩臺服務器同時讀到了髒數據,我還沒想清楚,大家有什麼想法給提一下。


 解決方案:

 1.嵌入頁面去除了用戶身份信息,不再創建遊客信息。

2.遊客表的主鍵改爲自增id,還是使用負id作爲區分遊客和會員的方式。這樣存在一個問題,就是有可能會有重複的遊客數據,

需要定期清理重複數據。


 不知道大家的系統中使用遊客機制時,是如何處理,請大神賜教!

發佈了25 篇原創文章 · 獲贊 3 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章