mysql - 瞬間流量很高的網(wǎng)站,要頻繁的插入數(shù)據(jù)到數(shù)據(jù)庫,應(yīng)該怎么解決這個問題?
問題描述
瞬間流量很高的網(wǎng)站,要頻繁的插入數(shù)據(jù)到數(shù)據(jù)庫,怎么才能解決速度慢的問題?要用到什么技術(shù)?
問題解答
回答1:1、分布式部署的數(shù)據(jù)庫,增加瞬時插入性能2、如果業(yè)務(wù)允許,采用消息隊列異步插入3、使用redis之類的做緩存,再異步插入數(shù)據(jù)庫3、對于插入操作頻繁,又不需要關(guān)聯(lián)查詢的數(shù)據(jù),可以選擇使用mongo這樣非關(guān)系型的數(shù)據(jù)庫
回答2:如果對實時性要求不是很高的話,可以用redis做一個中間層接收數(shù)據(jù),然后后臺定時或用消息訂閱機制從redis拉取數(shù)據(jù)并批量寫入數(shù)據(jù)庫。
回答3:考慮優(yōu)化存儲結(jié)構(gòu)2. 有條件考慮多機多數(shù)據(jù)庫多進(jìn)程。3. 配連接池,配中間件(消息隊列)中間數(shù)據(jù)庫(redis)4. 多線程…
回答4:你可以搜一下類似 淘寶每秒14萬訂單 之類的東西作為借鑒。這個東西沒有一成不變的方案。簡單說就是用redis之類的服務(wù)端緩存處理請求。
回答5:應(yīng)該還可以考慮下消息隊列
回答6:加入緩存機制,做負(fù)載均衡都可以試試
回答7:1 看日志 找到請求過高的請求地址,先找出原因,看能否避免,是否是必要的操作2 根據(jù)業(yè)務(wù)需求寫mysql觸發(fā)器,把這個工作交給mysql來做3 使用swoole 異步插入入數(shù)據(jù)庫4 可以用多線程隊列 5 數(shù)據(jù)不要直接寫入數(shù)據(jù)庫,可以先寫入redis
