1、優化查詢html
1.使用索引,避免全表掃描。數據庫
2.優化SQL語句。緩存
3.優化數據庫對象。負載均衡
1)拆分表異步
(1)垂直拆分:把主鍵和一些列放在一個表中,而後把主鍵和另外的列放在另外一個表中。若是一個表中某些列經常使用,而另一些不經常使用。若是一個表中某些列經常使用,而另一些不經常使用,則 能夠採用垂直拆分。性能
(2)水平拆分:根據一列或多列數據的值把數據行放到兩個獨立的表中。優化
2)使用中間表提升查詢速度spa
建立中間表,表結構和源表結構徹底相同,轉移要統計的數據到中間表,而後在中間表上進行統計,得出想要的結果。線程
4.硬件優化。日誌
5.MySQL自身優化
指定MySQL查詢緩衝區的大小,指定MySQL容許的最大鏈接進程數等。
http://www.javashuo.com/article/p-rsqetals-gb.html
http://www.javashuo.com/article/p-nfrpmmtk-c.html
6.應用優化
1)使用數據庫鏈接池
2)使用查詢緩存。
2、大訪問量到數據庫上,如何優化
1.主從複製,讀寫分離,負載均衡
配置兩臺數據庫的主從關係,master用於寫操做,slaves用於讀操做,master經過複製將數據同步到slaves中。原理:
1)master會將數據改變記錄到二進制日誌(binary log)中。
2)slaves有一個I/O線程不停監聽master中的binary log,一旦有更新,會將binary log拷貝進中繼日誌(relay log)。
主從複製的三種範式:
1)同步複製:master更新binary log後,需等待全部slaves複製更新完成後,才能夠自由處理其餘事務。
2)異步複製:master無需等待,就能夠自由處理其餘事務。
3)半同步複製:master只需等待一臺slave複製更新完成,就能夠自由處理其餘事務。
2.數據庫分表,分區,分庫。
分表:垂直拆分,水平拆分。
分區:把一張表的數據分紅多個區塊,這些區塊能夠在一個磁盤,也能夠在不一樣磁盤,分區後,數據散列在多個位置,多塊硬盤同時處理不一樣的請求,從而提升磁盤I/O讀寫性能。包括水平分區和垂直分區。
分庫:根據業務不一樣把相關的表切分到不一樣的數據庫中。