MySQL數據庫設計及性能優化經驗

一.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

七.集羣

同步的,是通過負載實現高性能,提高數據庫的容錯性。

八.大數據

超過千億級的數據,拋棄關係型數據庫,引入大數據的解決方案。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章