瞬间流量很高的网站,要频繁的插入数据到数据库,怎么才能解决速度慢的问题?要用到什么技术?
认证0级讲师
1、分散式部署的資料庫,增加瞬時插入效能2、如果業務允許,採用訊息佇列非同步插入3、使用redis之類的做緩存,再異步插入資料庫3 、對於插入操作頻繁,又不需要關聯查詢的數據,可以選擇使用mongo這樣非關係型的資料庫
如果對實時性要求不是很高的話,可以用redis做一個中間層接收數據,然後後台定時或用消息訂閱機制從redis拉取數據並批量寫入數據庫。
考慮最佳化儲存結構2. 有條件考慮多機多資料庫多進程。 3. 配連接池,配中間件(訊息佇列)中間資料庫(redis)4. 多執行緒…
你可以搜尋類似 淘寶每秒14萬訂單 之類的東西作為借鏡。這個東西沒有一成不變的方案。 簡單說就是用redis之類的服務端快取處理請求。
應該還可以考慮下訊息佇列
加入快取機制,做負載平衡都可以試試
1 看日誌找到請求過高的請求地址,先找出原因,看能否避免,是否是必要的操作2 根據業務需求寫mysql觸發器,把這個工作交給mysql來做3 使用swoole 非同步插入入資料庫4 可以用多執行緒佇列5 資料不要直接寫入資料庫,可以先寫入redis
1、分散式部署的資料庫,增加瞬時插入效能
2、如果業務允許,採用訊息佇列非同步插入
3、使用redis之類的做緩存,再異步插入資料庫
3 、對於插入操作頻繁,又不需要關聯查詢的數據,可以選擇使用mongo這樣非關係型的資料庫
如果對實時性要求不是很高的話,可以用redis做一個中間層接收數據,然後後台定時或用消息訂閱機制從redis拉取數據並批量寫入數據庫。
考慮最佳化儲存結構2. 有條件考慮多機多資料庫多進程。 3. 配連接池,配中間件(訊息佇列)中間資料庫(redis)4. 多執行緒…
你可以搜尋類似 淘寶每秒14萬訂單 之類的東西作為借鏡。這個東西沒有一成不變的方案。
簡單說就是用redis之類的服務端快取處理請求。
應該還可以考慮下訊息佇列
加入快取機制,做負載平衡都可以試試
1 看日誌找到請求過高的請求地址,先找出原因,看能否避免,是否是必要的操作
2 根據業務需求寫mysql觸發器,把這個工作交給mysql來做
3 使用swoole 非同步插入入資料庫
4 可以用多執行緒佇列
5 資料不要直接寫入資料庫,可以先寫入redis