亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于并發的問題

關于并發的問題

PHP
當年話下 2019-03-18 15:24:53
php后臺需要往mysql數據庫表里插入記錄,這張表的id是主鍵但不是自增長的,需要通過某種規則計算出來,比如先查看當天創建的記錄有N個,那么這次的id就設為xxxN+1.如果訪問量比較大情況下,可能多個請求先獲取到的記錄個數相同,那么就有可能生成相同的id,插入數據庫的話就會報錯,這種情況應該如何處理呢?
查看完整描述

5 回答

?
慕容3067478

TA貢獻1773條經驗 獲得超3個贊

1、如果業務需求一致性很強的話,加鎖,或者線程阻塞保證數組的強一致性
2、使用非關系型數據庫比如redis或者mongodb或者mecache
3、使用隊列

查看完整回答
反對 回復 2019-03-18
?
慕少森

TA貢獻2019條經驗 獲得超9個贊

Redis的incr可以解決

查看完整回答
反對 回復 2019-03-18
?
蕭十郎

TA貢獻1815條經驗 獲得超13個贊

鎖數據庫并不是一個好辦法,可能在并發時導致提交失敗。
建議還是修改數據庫架構,把當前主鍵改為unique索引。

查看完整回答
反對 回復 2019-03-18
?
Smart貓小萌

TA貢獻1911條經驗 獲得超7個贊

建議id做保留字段,如你所說的規則,將日期做一個字段,當天的記錄號作一個字段,建立聯合唯一索引

redis來計數當天的記錄數,如果并發量較大,可以考慮隊列消耗

查看完整回答
反對 回復 2019-03-18
  • 5 回答
  • 0 關注
  • 420 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號