1. 程式人生 > >MySQL優化方法論

MySQL優化方法論

MySQL優化方法
  主機
  作業系統
  資料庫
  應用

MySQL優化理論
  吞吐率(Throughput) VS 延時(Latency)
  吞吐率: 我們一般使用單位時間內伺服器處理的請求數來描述其併發處理能力。
  稱之為吞吐率(Throughput),單位是 “req/s”。 吞吐率特指Web伺服器單位時間內處理的請求數。
  延時: 延時是描述操作裡用來等待服務的時間。在某些情況下,它可以指的是整個操作時間,等同於響應時間。
  例如,一次應用程式請求、一次資料庫查詢、一次檔案系統操作,等等。舉個例子,延時可以表示從點選連結
  到螢幕顯示整個網頁載入完成的時間。
  目標: 在使用者能夠接受的延時下,儘可能的提高吞吐量
little’s law
  在一個穩定的系統中,平均的客戶數等於客戶到達該系統的平均速率乘以客戶在該系統中花費的平均時間
  例如:請求到達率: 1000請求/s
  Response time:0.5s
  併發量:500
  ==> 併發量 = 請求到達率(吞吐量)* Response time(延時)
5分鐘法則
臨近法則

Client請求:           減少資料訪問(減少磁碟訪問)
network             返回更少資料/減少互動次數(減少網路傳輸)
APP:ds/code/加機器
DB:Instance/SQL/分庫分表      引數:innodb_buffer_pool_size
                innodb_flush_log_at_trx_commit
                sync_binlog
                SQL:開發規範(減少CPU及記憶體開  銷)
                執行計劃
OS:kernel/limit/fs/std       規範化/標準
主機CPU/MEM/IO/NET


5分鐘法則是指如果請求的資源在被第一次訪問後的5分鐘內,需要再次被訪問的,那就要把該資料快取起來,以提高訪問響應時間。
而為什麼要快取呢,就是因為從各個介質上獲取資料的時間成本是不一樣的,比如常見的幾種介質中,cpu快取最快,記憶體其次,
硬碟最慢,而硬盤裡面則是ssd最快,15000轉sas盤其次,7200轉更慢等等。

臨近法則是指,被請求的資源的臨近資源,往往也會被請求。比如資料庫,請求一個block或一個page時,其臨近的page被請求的概
率也非常高。所以像oracle就有db_file_multiblock_count這樣的優化引數設定,而mySQL雖然沒有類似的引數,但是預設也是多塊讀的模式。

高併發系統設計
應用級快取,http快取,多級快取(分散式,熱點資料),佇列(非同步,同步),
擴容(應該擴容,資料庫拆分,水平,垂直,資料異構),非同步併發,池化(資料庫連線池,執行緒池)