国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

mysql優(yōu)化 - mysql數(shù)據(jù)insert快還是update比較快

瀏覽:99日期:2022-06-15 09:07:34

問(wèn)題描述

問(wèn)題解答

回答1:

你這個(gè)應(yīng)用場(chǎng)景很像是:

修改用戶余額前,因?yàn)榕滦薷某鰡?wèn)題,意外把用戶余額改為0什么的。而選擇先插入一條記錄到用戶賬務(wù)變動(dòng)表,然后查出賬務(wù)變動(dòng)表的數(shù)據(jù),來(lái)更新用戶余額字段。

用一個(gè)成語(yǔ)形容這種行為:“慌不擇路”

你有沒(méi)有想過(guò),既然你擔(dān)心用戶余額修改時(shí)出問(wèn)題,那么你也同樣要擔(dān)心用戶帳變表插入出問(wèn)題,那是不是還要另一個(gè)表來(lái)保證帳變表呢?那另一個(gè)表誰(shuí)來(lái)保證呢?

其實(shí),你應(yīng)該知道正確的解決辦法。而不是用兩個(gè)不安全的辦法來(lái)湊成1個(gè)安全的辦法。你這樣做,非但沒(méi)有得到1個(gè)安全的辦法,反而得到了兩個(gè)不安全的辦法。

正確的辦法是,直接修改用戶余額表,并且加上排它鎖。例如:

// 開(kāi)始事物BEGIN ;// 取出該用戶數(shù)據(jù),并鎖住,防止其他線程(進(jìn)程)讀取該條記錄SELECT * FROM users where id = $id FOR UPDATE ;// 處理業(yè)務(wù)...計(jì)算用戶新的余額// 更新用戶余額UPDATE users SET money = $new_money;// 獲取影響行數(shù)=1,則:{ // 提交事物(解鎖我們鎖定的記錄) COMMIT ;}else{ // 發(fā)現(xiàn)不對(duì),撤銷我們?cè)谑挛飪?nèi)做的所有操作 ROLLBACK ;}回答2:

不知道會(huì)不會(huì)導(dǎo)致數(shù)據(jù)丟失,但有個(gè)腦洞,在多線程并發(fā)的情況下,很有可能出現(xiàn)后來(lái)的數(shù)據(jù)覆蓋前面的數(shù)據(jù).即便是先插入一張表中,在多線程中也可能出現(xiàn)后來(lái)的先插入的情況吧.

所以建議樓主開(kāi)啟mysql的事務(wù)功能,具體的可以看下這個(gè)問(wèn)題

https://segmentfault.com/q/10...

相關(guān)文章:
主站蜘蛛池模板: 国产上床视频 | 欧美黄a | 国语精品视频在线观看不卡 | 99视频九九精品视频在线观看 | 国产成人盗拍精品免费视频 | 久久久这里只有精品免费 | 亚洲最大看欧美片网站 | 久久免费国产精品一区二区 | 亚洲成年人在线观看 | 国产高清一区 | 欧美精品免费看 | 97视频免费在线观看 | 亚洲精品色 | 高清不卡毛片 | 日韩专区亚洲综合久久 | 亚洲欧美在线观看视频 | 久久久亚洲精品国产 | 黄色视影 | 大学生久久香蕉国产线观看 | 欧美一级aa毛片禁片 | 视频一区二区三区在线 | 在线视频欧美亚洲 | 午夜美女久久久久爽久久 | 国产网站免费视频 | 色综合在 | 和老外3p爽粗大免费视频 | 成人做爰视频www片 成人做爰视频www视频 | 亚洲视频精选 | 国产美女精品在线 | 毛片网站视频 | 国产精品无打码在线播放9久 | 蜜桃日本一道无卡不码高清 | 国产日韩精品一区二区三区 | 国产成人yy精品1024在线 | 手机在线观看黄色网址 | 国产禁女女网站免费看 | 国产成人理在线观看视频 | 精品国产精品国产 | 久久夜色精品国产亚洲 | 亚洲精品国产一区二区三区在 | 成人1000部免费观看视频 |