MySQL數據庫多種優化方案

MySQL數據庫多種優化方案html

1、硬件優化(物理機)前端

       aCPU 8~16CPU 2~4mysql

       bmem  96G~128G3~4個實例。 32~64G內存,2個實例linux

       cdisk 數量越多越好,性能上:SSD (高併發)> SAS(普通) > sata (線下)redis

              4塊盤爲例:RAID0 > RAID10 > RAID5> RAID1sql

       d、網卡,多塊網卡bondbuffer等等。內核調優能夠處理數據庫

2、軟件優化緩存

       操做系統:x64安全

       軟件:mysql ,編譯安裝,編譯優化。架構

3my.cf參數優化(優化的幅度比較小,大部分是架構及SQL語句優化)

       參考:http://www.linuxyw.com/a/shujuku/20130506/216.html

             http://www.ha97.com/4110.html

       思想:

       監控:生產參數是通常狀況下的參數

              命令監控:show global status\G  而後能夠看到每一個參數用了多少,每一個緩存用了多大。經過監控慢慢調整。

              調優工具:mysqlreport 還有其餘的工具

3SQL語句的優化

       a、索引的優化

              1、抓出慢SQL。讓DBA儘可能早的參與的開發裏面和開發共同討論。白名單機制

                     long_query_time= #

                     log-slow-queries= /vra/lib/mysql/slow-log

              2、慢查詢日誌分析工具 -- mysqlsla ,

                     pt-query-digest.,mysqldumpslows,

              3、天天晚上0:00定時分析慢查詢,發到核心開發,DBA分析,及高級運維,CTO郵箱。

              DBA分析給出優化建議--> 核心開發確認更改--->DBA上線操做。   

       b、大的複雜的SQL語句的拆分爲多個小的SQL語句

              子查詢,JOIN連表查詢。一張表數據太大,怎麼拆分都有問題。須要拆表,拆庫

       c、數據庫是存儲數據的地方,可是不是計算數據的地方。

              計算,應用類處理,都要拿到前端應用解決,禁止在數據庫上處理。

       d、搜索功能,like "%51cto%" ,通常不要使用MySQL數據庫。

4、架構上的優化

a)        業務拆分: 搜索功能,like"%51cto%" ,通常不要使用MySQL數據庫。

b)       業務拆分:某些業務應用使用nosql持久化分出,例如:memcachedb.redis,ttserver.

       例如:粉絲關注,好友關係等等。

c)        數據庫前端必需要加cache,例如:memcached,用戶登陸,商品查詢等等。

d)       動態的數據靜態化,整個文件靜態化,頁面片斷靜態化

e)        數據庫集羣與讀寫分離,一主多從,經過程序或者dbproxy進行集羣讀寫分離。

f)        單表查過2000萬了,拆庫拆表,不一樣的請求分到不一樣的機器上面,前面hash取模。

5、流程,制度,安全優化。

       任何一次認爲數據庫記錄的更新都要走一個流程:

       人的流程:開發 --> 核心開發確認 --> 運維或DBA

       測試的流程:開發人員內網測試 --> IDC測試 --> 線上執行。

       客戶端的管理,客戶端PHPmyadmin。客戶端訪問控制。防患於未然


以上摘自老男孩視頻

相關文章
相關標籤/搜索