MySQL數據庫的優化

1硬件優化

1.1CPU的優化

百度核心業務使用8-16顆;其中一般2-4顆CPU作用一個實例

1.2內存的優化

內存一般採用的是16GB的內存條,只能採用雙數,不採用單數

1.3磁盤的優化

磁盤數越多越好,性能:SSD>SAS>SATA;一般數據採用RAID10,性能是最好的

1.4網卡的優化

1)多網卡進行綁定

2)優化buffer

3)TCP的優化

2軟件優化

2.1操作系統的優化

1)操作系統採用X86_64的系統,因爲32位系統單進程4GB的限制

2)Mysql數據庫的安裝採用編譯安裝,不採用yum和直接使用的安裝方式

 

2.2My.cnf裏參數的優化

1)優化的幅度很小,大分部的優化幅度很小,主要SQL的優化以及架構的優化

2)在innodb中buffer_pool最關鍵,一般把數據都緩存在buffer_pool;可以配到80%物理內存的大小;

思想:

1)首先做監控,然後在生產中慢慢進行調整

2)命令監控Show global status\G(查看buffer命中率)

3)Show full processlist

4)查看uptime看機器的負載情況

5)在SQL語句中進行優化

6)工具:mysqlreport工具(參數調優工具)

2.3SQL優化

2.3.1索引優化

1)慢查詢日誌分析工具:mysqldumpslow、mysqlsla(推薦)、myprofi、mysql-explain-slow-log,mysqllogfilter

2)首先抓出慢SQL;配置my.cnf文件(寫慢日誌查詢)

3)每天晚上0點定時分析慢查詢,發到開發,DBA以及高級運維的郵箱裏;

2.3.2大的複雜的SQL語句拆分多個小的SQL語句

2.3.3數據庫是存儲數據的地方,但是不是計算數據的地方;對數據計算類的應用處理,應該放到前端應用程序去優化,禁止在數據庫內優化。

2.3.4搜索的功能一般不要用數據庫,使用單獨的搜索模塊,如:like %關鍵字段%

2.4架構上的優化(全鏈路的設計思路進行講解)

1)業務拆分

2)數據庫前端加cache 如:mencache、redis(業務場景;用戶登錄、商品查詢)

3)某些業務應用使用nosql持久化存儲,如redis和monogda(粉絲關注、好友關係)

4)動態的數據靜態化,頁面片段靜態化

5)數據庫集羣和讀寫分離,一主多從等,雙主多從;通過程序和DBproxy進行集羣讀寫分離;

6)拆庫拆表

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