第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

mysql高并發(fā)時候投票問題 如何優(yōu)化

mysql高并發(fā)時候投票問題 如何優(yōu)化

繁星點點滴滴 2018-06-25 15:38:50
比如一萬人給一個人投票我的做法是先是讀取票數(shù)然后在票數(shù)+1但是一萬人同時投票的話 獲取票數(shù)和更新肯定獲取的不對代碼如下 用的是phpcms 請問大神該怎么優(yōu)化 代碼就這么點 結(jié)構(gòu)簡單的 就是投票人比較多//根據(jù)ID獲取票數(shù) $r = $db->get_one(array('id' => intval($_GET['id']))); //票數(shù)累計并更新票數(shù) $num = $r['num'] + 1; $sql = array('num' => $num); $db->update($sql, array('id' => intval($_GET['id'])));
查看完整描述

4 回答

?
郎朗坤

TA貢獻1921條經(jīng)驗 獲得超9個贊

誠邀。

如果你不想或者不愿意將redis引入到phpcms中。
我沒有對phpcms進行過二次開發(fā),但是你可以在sql中直接進行相加,并非使用代碼去實現(xiàn)相加

update student set score=score+1 where id = 1

這樣就避免了投票不準確
如果有時間可以使用redis或者隊列去實現(xiàn)這個功能。


查看完整回答
反對 回復(fù) 2018-07-18
?
小怪獸愛吃肉

TA貢獻1852條經(jīng)驗 獲得超1個贊

如果只是保證數(shù)據(jù)正常, 那可以事務(wù)加排它鎖來搞.

按理說會先存到redis里面, 投票結(jié)束了才寫入數(shù)據(jù)庫


查看完整回答
反對 回復(fù) 2018-07-18
?
人到中年有點甜

TA貢獻1895條經(jīng)驗 獲得超7個贊

簡單點就直接MySQL上鎖,但是這樣性能會低很多。
可以利用redis,讀也從redis讀,更新也是更新redis里(incr操作),
開個任務(wù)等到投票結(jié)束,把緩存中投票數(shù)寫入到MySQL中。

查看完整回答
反對 回復(fù) 2018-07-18
?
森欄

TA貢獻1810條經(jīng)驗 獲得超5個贊

看你的并發(fā)有多高、服務(wù)器性能有多好了。
簡單來講,有幾點可以處理你的問題。

  1. 使用redis列表記錄每個人的投票,異步去處理數(shù)據(jù)庫。

  2. 數(shù)據(jù)庫加鎖,不過在高并發(fā)(如只有一臺低檔服務(wù)器+一萬個人3s內(nèi)同時訪問)時能不能扛得住要看信仰。

  3. 優(yōu)化你的表設(shè)計,這張表盡量簡單一些,選擇適當?shù)氖聞?wù)隔離級別。

  4. 服務(wù)器物理機換成硬盤讀寫性能更優(yōu)的。


查看完整回答
反對 回復(fù) 2018-07-18
  • 4 回答
  • 0 關(guān)注
  • 380 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號