寫在建庫前:
在確定數據庫業務后、建立數據庫表格時,就應對一些常見問題有所考慮,以避免在數據增長一段時間后再做應對,可能造成時間及維護成本增加:
- 數據的月增量,年增量
- 數據的快速增長點
- 是否需要觸發器或事件等
- 查詢業務需求
- 服務器訪問量
以上的考慮項,對數據庫的類型、表的結構、表間關系的定義及數據庫配置都有非常重要的影響。
運行后優化:
優化順序
第一,優化你的sql和索引;
想實現一個查詢,可以寫出很多種查詢語句,不同的語句,根據你選擇的引擎、表中數據的分布情況、索引情況、數據庫優化策略、查詢中的鎖策略等因素,最終查詢的效率相差很大;優化要從整體去考慮,有時你優化一條語句后,其它查詢反而效率被降低了,所以要取一個平衡點。
第二,加緩存,memcached,redis;
第三,主從復制或主主復制,讀寫分離;
第五,如果以上都做了,那就先做垂直拆分,其實就是根據你模塊的耦合度,將一個大的系統分為多個小的系統,也就是分布式系統;
第六,才是水平切分,針對數據量大的表,這一步最麻煩,最能考驗技術水平,要選擇一個合理的sharding key,為了有好的查詢效率,表結構也要改動,做一定的冗余,應用也要改,sql中盡量帶sharding key,將數據定位到限定的表上去查,而不是掃描全部的表;
參考:
1,MySQL 對於千萬級的大表要怎么優化? https://www.zhihu.com/question/19719997
2,通過配置Mysql參數提高寫入速度(整理) https://www.cnblogs.com/lzy1991/p/4778786.html
3,不建議mysql分區表 http://blog.csdn.net/qq_19707521/article/details/59058135