優化查詢+大訪問量

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讀寫性能。包括水平分區和垂直分區。

分庫:根據業務不一樣把相關的表切分到不一樣的數據庫中。

相關文章
相關標籤/搜索