高性能MySQL讀書筆記 (二)

1. 基準測試

1.1 應用

驗證系統的一些假設
重現系統異常
測試系統當前的運行狀況
模擬更高的負載
規劃業務增加
測試應用適應可變環境的能力
測試不一樣硬件,軟件和操做系統的配置mysql

1.2 策略

針對整個系統的總體測試, 集成式
單獨測試MySQL, 單組件式web

1.3 測試指標

  1. 吞吐量: 在線事務處理(OLTP),單位爲每秒事務數TPS
  2. 響應時間或延遲: 百分比響應時間較爲表明性
  3. 併發性: 任意時間有多少同時發生的併發請求. 關注的是正在工做中的併發操做; 一般是爲了測試應用在不一樣併發下的性能(吞吐量和響應時間)
  4. 可擴展性

1.4 方法

避免常見錯誤
設計和規劃基準測試
基準測試的運行時間設置
獲取系統的性能和狀態
收集分析繪圖sql

1.5 工具

集成式測試工具數據庫

  1. ab: Apache http服務器基準測試工具,測試服務器qps, 針對單個url進行儘量快的壓力測試
  2. http_load: 對Web服務器,能夠經過輸入文件對多個url進行隨機測試
  3. JMeter: 測試Web應用和其餘入FTP服務器或經過JDBC進行數據庫查詢測試

單組件式測試工具服務器

  1. mysqlslap: 模擬服務器負載並輸出計時信息
  2. sqlbench: 測試服務器執行查詢的速度
  3. super smack: mysql 和postgresql的基準測試工具
  4. database test suite
  5. sysbench: 多線程系統壓測工具, 支持mysql,操做系統,和硬件測試

2. 服務器性能剖析

2.1 原則

  1. 性能即響應時間沒法;
  2. 沒法測量就沒法有效優化

2.2 書中推薦工具

  1. New Relic: 收集分析數據,提供web界面
  2. xhprof: Facebook開源的輕量級PHP性能分析工具
  3. Percona Toolkit: pt-query-digest 生成慢查詢日誌分析報告

2.3 剖析查詢

  1. SHOW PROFILE: 將profiling開啓後,執行的sql的剖析信息會被記錄到臨時表, 經過 show profile from query (index)命令便可以獲取到執行的過程信息
  2. SHOW STATUS: 非剖析工具,主要用在對於執行完後觀察某些計數器的值
  3. 使用慢查詢日誌

2.4 診斷間歇性問題

  1. show global status: 經過某些計數器的"尖刺"或"凹陷"分析問題
  2. show processlist: 觀察是否有大量線程處於不正常的狀態或其餘不正常特徵
  3. 使用innotop: 實時地展現服務器正在發生的事情,監控innodb,監控多個MySQL實例
  4. 使用慢查詢日誌

2.5 其餘剖析工具

  1. 自帶的一些INFORMATION_SCHEMA統計表
  2. 使用strace工具,pt-iopfofile工具生成I/O活動報告
相關文章
相關標籤/搜索