機器實在負荷不了
如果做了以上調整服務器還是不能承受那就只能通過架構級調整來優化了
mysql同步
通過mysql同步功能將數據同步到數台從數據庫由主數據庫寫入從數據庫提供讀取我個人不是那麼樂意使用mysql同步因為這個辦法會增加程序的復雜性並常常會引起數據方面的錯誤在高負荷的服務中死機了還可以快速重啟但數據錯誤的話要恢復就比較麻煩
加入緩存
加入緩存之後就可以解決並發的問題效果很明顯如果是實時系統可以考慮用刷新緩存方式使緩存保持最新在前端加入squid的架構比較提倡使用在命中率比較高的應用中基本上可以解決問題如果是在程序邏輯層裡面進行緩存會增加很多復雜性問題會比較多而且難解決不建議在這一層面進行調整
程序架構調整支持同時連接多個數據庫
如果web加入緩存後問題還是比較嚴重只能通過程序架構調整把應用拆散用多台的機器同時提供服務如果拆散的話對業務是有少許影響如果業務當中有部分功能必須使用所有的數據可以用一個完整庫+n個分散庫這樣的架構每次修改都在完整庫和分散庫各操作一次或定期整理完整庫當然還有一種最笨的把數據庫整個完完整整的做拷貝然後程序每次都把完整的sql在這些庫執行一遍訪問時輪詢訪問我認為這樣要比mysql同步的方式安全
使用 mysql proxy 代理
mysql proxy 可以通過代理把數據庫中的各個表分散到數台服務器但是它的問題是沒有能解決熱門表的問題如果熱門內容散在多個表中用這個辦法是比較輕松就能解決問題我沒有用過這個軟件也沒有認真查過不過我對它的功能有一點點懷疑就是它怎麼實現多個表之間的聯合查詢?如果能實現那麼效率如何呢?
使用memcachedb
數據庫換用支持mysql的memcachedb是可以一試的想法從memcachedb的實現方式和層面來看對數據沒有什麼影響不會對用戶有什麼困擾為我現在因為數據庫方面問題不多沒有試驗過這個玩意不過只要它支持mysql的大部分主要的語法而且本身穩定可用性是無需置疑的
[] [] [] [] [] []
From:http://tw.wingwit.com/Article/program/MySQL/201311/29770.html