企業級項目千萬級數據的優化策略

SQL MySQL Memcached Redis 來自火星的程序猿 2017-05-26

web企業級項目千萬級數據的優化

  • 第一:優化你的sql和索引,詳細說明見《mysql學習筆記——4.sql優化》http://www.jianshu.com/p/add70a5168bd。

  • 第二:加緩存memcached、redis。

  • 第三:以上都做了後,還是慢,就做主從複製或主主複製,讀寫分離,可以在應用層做,效率高,也可以用三方工具,第三方工具推薦360的atlas,其它的要麼效率不高,要麼沒人維護,主從複製相關問題見《mysql學習筆記——1.主從複製》http://www.jianshu.com/p/937fe510b084。

  • 第四:如果以上都做了還是慢,不要想著去做切分,mysql自帶分區表,先試試這個,對你的應用是透明的,無需更改代碼,但是sql語句是需要針對分區表做優化的,sql條件中要帶上分區條件的列,從而使查詢定位到少量的分區上,否則就會掃描全部分區,另外分區表還有一些坑,在這裡就不多說了。

  • 第五:如果以上都做了,那就先做垂直拆分,其實就是根據你模塊的耦合度,將一個大的系統分為多個小的系統,也就是分佈式系統。

  • 第六:才是水平切分,針對數據量大的表,這一步最麻煩,最能考驗技術水平,要選擇一個合理的sharding key,為了有好的查詢效率,表結構也要改動,做一定的冗餘,應用也要改,sql中儘量帶sharding(分片) key,將數據定位到限定的表上去查,而不是掃描全部的表。

mysql數據庫一般都是按照這個步驟去演化的,成本也是由低到高。

相關推薦

推薦中...