1. 程式人生 > 資料庫 >MySQL基準測試

MySQL基準測試

基準測試是一種測量和評估軟體效能指標的活動用於建立某個時刻的效能基準,以便當系統發生軟硬體變化時重新進行基準測試以評估變化對效能的影響,是針對系統設定的一種壓力測試。

基準測試特點

直接、簡單、易於比較,用於評估伺服器的處理能力
可能不關心業務邏輯,所使用的查詢和業務的真實性可以和業務環境沒關係

壓力測試特點

  1. 對真實的業務資料進行測試,獲得真實系統所能承受的壓力
  2. 需要針對不同主題,所使用的資料和查詢也是真實用到的
  3. 基準測試是簡化了的壓力測試

基準測試的目的

  1. 建立MySQL伺服器的效能基準線,確定當前MySQL伺服器執行情況,確定優化之後的效果
  2. 模擬比當前系統更高的負載,已找出系統的擴充套件瓶頸,可以增加資料庫併發,觀察QPS(每秒處理的查詢
    數),TPS(每秒處理的事務數)變化,確定併發量與效能最優的關係
  3. 測試不同的硬體、軟體和作業系統配置
  4. 證明新的硬體裝置是否配置正確

如何進行基準測試

對整個系統進行基準測試:

優點

  1. 能夠測試整個系統的效能,包括web伺服器快取、資料庫等
  2. MySQL並不總是出現效能問題的瓶頸,如果只關注MySQL可能忽略其他問題,能反映出系統中各個元件介面間的效能問題體現真實效能狀況

缺點

基準測試最重要的就是簡單,可能對不同的方案進行測試,找到最優的方案,基準測試進行的時間一定要短,否則就要花費大量的時間進行基準測試

測試設計複雜,消耗時間長

對MySQL進行基準測試

優點

測試設計簡單,所耗費時間短

缺點

無法全面瞭解整個系統的效能基線

MySQL基準測試的常見指標

單位時間內處理的事務數(TPS)
單位時間內處理的查詢數(QPS)

MySQL基準測試工具

mysqlslap:可以模擬伺服器負載,並輸出相關統計資訊

mysqlslap --concurrency=1,50,100,200 --iterations=3 --number-int-cols=5 --number
-char-cols=5 --auto-generate-sql --auto-generate-sql-add-autoincrement --engine=
myisam,innodb --number-of-queries=10 --create-schema=test

常用引數說明

–auto-generate-sql 由系統自動生成SQL指令碼進行測試
–auto-generate-sql-add-autoincrement 在生成的表中增加自增ID
–auto-generate-sql-load-type 指定測試中使用的查詢型別 讀寫或者混合,預設是混合
–auto-generate-sql-write-number 指定初始化資料時生成的資料量
–concurrency 指定併發執行緒的數量 1,10,200
–engine 指定要測試表的儲存引擎,可以用逗號分割多個儲存引擎
–no-drop 指定不清理測試資料
–iterations 指定測試執行的次數 指定了這個不能指定no-drop
–number-of-queries 指定每一個執行緒執行的查詢數量
–debug-info 指定輸出額外的記憶體及CPU統計資訊
–number-int-cols 指定測試表中包含的INT型別列的數量
–number-char-cols 指定測試表中包含的varchar型別的數量
–create-schema 指定了用於執行測試的資料庫的名字
–query 用於指定自定義SQL的指令碼
–only-print 並不執行測試指令碼,而是把生成的指令碼打印出來