一.SQL優化
- 定位慢查詢:
- 爲查詢緩存優化你的查詢
- MySQL函數慎用、用變量代替MySQL函數,where後儘量不使用MySQL函數
- EXPLAIN 你的 SELECT 查詢
- 避免 SELECT *
- 永遠爲每張表設置一個ID
- 儘可能的使用 NOT NULL
二.建索引、去外鍵、批處理
- 主外鍵一定要建立索引。
- 經常出現在關鍵字WHERE、order by、group by、distinct後面的字段,建立索引。
- Where語句中不要出現Null、or、!=、<>、in、not in否則會避開索引進行全表掃描
- 複合索引,索引的字段順序要和這些關鍵字後面的字段順序一致,否則索引失效。
- 對複合索引,按照字段在查詢條件中出現的頻度建立索引。
- 對於定義爲text數據類型的列不要建立索引。
- 對於經常存取的列避免建立索引
- 限制表上的索引數目。3-5個
三.引入內存緩存
redis、memcache
四.主從複製、讀寫分離
異步的。數據冗餘實現高可用
五.分庫分表分區
500W 2G
垂直分庫、垂直分表、水平分表、水平分庫分表
六.向上擴展(擴展硬件)
CPU 內存 SSD
七.集羣
同步的,是通過負載實現高性能,提高數據庫的容錯性。
八.大數據
超過千億級的數據,拋棄關係型數據庫,引入大數據的解決方案。