程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql基礎測試,mysql基礎

mysql基礎測試,mysql基礎

編輯:MySQL綜合教程

mysql基礎測試,mysql基礎


測試原因
  為什麼需要做性能測試
  • 模擬比當前系統更高的負載,找出性能瓶頸
  • 重現線上異常
  • 測試不同硬件軟件配置
  • 規劃未來的業務增長
  測試分類
  性能測試的分類
  • 設備層的測試
  • 業務層的測試
  • 數據庫層的測試
  設備層的測試
  • 關注哪些指標
    • 服務器,磁盤性能
    • 磁盤壞塊率
    • 服務器壽命
  業務層測試
  • 針對業務進行測試
  數據庫層的測試
  • 什麼情況下要做Mysql的測試
    • 測試不同的Mysql分之版本
    • 測試不同的mysql版本
    • 測試不同的mysql參數搭配
  mysql測試分類
  • CPU Bound --全內存的測試,測試的數據遠小於配置的內存;這樣就可以不用因為磁盤IO的性能不同,而影響測試結果。
  • IO  Bound-- 測試的數據量遠大於內存,這就有大量的數據從磁盤IO讀取寫入;
  4小類:
  • 寫入測試
  • 更新測試
  • 純度測試
  • 混合模式(根據業務不同)
  常用的測試工具
  • 開源的mysql性能測試工具
    • sysbench
    • tpcc-mysql
    • mysqlslap
  • 針對業務編寫性能測試工具
    • blogbench--根據網易博客,的具體業務來做的測試工具
  性能測試衡量指標:
  • 服務吞吐量
    • TPS--每秒執行事務的總量
    • QPS--每秒執行的請求總量
  • 服務響應時間
  • 服務並發性---正在工作中的並發操作,或者是同時工作中的線程數或者連接數。例如一個web站點"同時有50000個用戶"訪問,卻可能只有10--15個並發請求到mysql數據庫,此時並發數只有10--15。
  • 可擴展性---------------簡單來說,給系統增加一倍的資源(比如兩倍的CPU數),就可以獲得兩倍的吞吐量。當然,同時性能(響應時間)也必須在可以接受的范圍內。大多數系統是無法做到如此理想的線性擴展的。
  測試方法
  設計基准測試的常見錯誤:
  • 使用真實數據的子集而不是全集。
  • 與真實用戶行為不匹配。
  • 沒有檢查錯誤。-----------測試中遇到不是預期結果,就應該檢查錯誤日志,這時基本要求。
  • 忽略了系統預熱的過程----系統重啟後,緩存是沒有數據的,這時測試與實際情況不符,實際很可能是 緩存中已經有很多數據。
  • 測試時間太短
  1 測試規劃:
  • 記錄測試數據
  • 系統配置的步驟
  • 如何測試的步驟
  • 分析結果
  • 預熱的方案
  應該建立將參數和結果文檔化的規范,每一輪測試都必須進行詳細記錄   2  基准測試應該運行多長時間   一個簡單的測試規則,就是等系統看起來穩定的時間至少等於系統預熱的時間。   基准測試應該運行足夠長的時間。   如果沒有實際去完成准確完整的基准測試,那麼已經花費的所有時間都是一種浪費。有時候要相信別人的測試結果,這總比做一次半拉子的測試來得到一個錯誤的結論要好。   3  獲取系統性能和狀態   需要記錄的數據包括系統狀態和性能指標:
  • cpu使用率
  • 磁盤I/O
  • 網絡流量統計
  • show global status 計數器等
使用腳本對這些數據進行收集。   基於mysql的默認配置的是沒有什麼意義,因為默認配置是基於消耗很少內存的極小應用的。   4 運行基准測試並分析結果   自動化基准測試,是個不錯的方案。可以是一個makefile或者一組腳本。   要盡可能地使用所有測試過程都自動化,包括數據裝載,系統預熱,執行測試,記錄結果。等。   多次測量   5 繪圖的重要性   通過圖形可以立刻發現一些問題,而這些問題在原始數據中卻很難被注意到。   在執行基准測試的時候要盡可能收集更多的細節數據,然後將數據繪制成圖形,這樣可以幫助快速地發現問題。   gnuplot或者R繪圖;   測試工具
  Sysbench
  • 業界較為出名的性能測試工具
  • 可以測試磁盤,CPU,數據庫
  • 支持多種數據庫:oracle,DB2,MYSQL
  • 需要自己下載編譯安裝
  • 建議版本:sysbench0.5
  sysbench,不僅用來測試數據庫的性能,也可以測試運行數據庫的服務器的性能。   強烈建議熟悉sysbench測試,在mysql用戶的工具包中,這應該是最有用的工具之一。  
  • sysbench 的cpu基准測試
  • sysbench 的文件I/O基准測試
  • sysbench 的OLTP基准測試
  sysbench 其他的基准測試,但和數據庫性能沒有直接關系。
  • 內存-----測試內存的連續讀寫性能
  • 線程-----測試線程調度器的性能。
  • 互斥鎖---測試互斥鎖性能。
  • 順序寫---測試順序寫的性能。
    Tpcc-mysql  
  • TPC-C是專門針對聯機交易處理系統(OLTP系統)的規范
  • Tpcc-mysql由percona根據規范實現
TPCC流程  更能模擬線上業務 使用該測試工具:需要創建數據和表結構,加載數據,執行測試三個步驟。   benchmark() mysql的benchmark():可以測試某些特定操作的執行速度。  
mysql> set @input := 'hello world';
Query OK, 0 rows affected (0.00 sec)
 
mysql> select benchmark(1000000,MD5(@input));
+--------------------------------+
| benchmark(1000000,MD5(@input)) |
+--------------------------------+
|                              0 |
+--------------------------------+
1 row in set (1.45 sec)
 
mysql> select benchmark(1000000,SHA1(@input));
+---------------------------------+
| benchmark(1000000,SHA1(@input)) |
+---------------------------------+
|                               0 |
+---------------------------------+
1 row in set (1.40 sec)

 

雖然benchmark()函數用起來很方便,但是不適合用來做真正的基准測試,因為該函數只是簡單地返回服務器執行表達式的時間,不會涉及分析和開銷,等因素。 而且表達式必須像這個例子一樣包含用戶定義的變量(input),否則會多次執行同樣的表達式會因為系統緩存命中而影響結果。   具體測試實踐,請看sysbench實踐,tpcc-mysql實踐;    總結
 
  •  四小類:寫入測試,更新測試,純度測試,混合模式
  •  性能測試衡量指標:
    •  服務吞吐量
      •  TPS--每秒執行事務的總量
      •  QPS--每秒執行請求的總量
    •  服務響應時間
    •  服務並發性
  •  設計測試常見錯誤:
    • 使用數據子集而不是全集,
    • 與真實用戶行為不匹配,
    • 沒有檢查錯誤,
    • 忽略了系統預熱過程,測試時間太短;
  • 測試方法
    •  測試規劃:
      • 記錄測試數據,
      • 系統配置步驟,
      • 測試步驟,
      • 分析結果,
      • 預熱方案;
    •  測試時間:測試應該運行足夠長的時間,至少等於系統預熱的時間。
    •  獲取系統性能和狀態:cpu,IO,網絡流量,mysql狀態計數器;
    •  運行測試:自動化測試包含:數據裝載,系統預熱,執行測試,記錄結果。
    •  繪圖分析:直觀的發現問題;
    •  測試工具:sysbench,tpcc-mysql,benchmark()
  •  測試小結:
    •  IO Bound測試數據量要遠大於內存,cpu Bound測試數據量要小於內存
    •  測試時間建議大於60分鐘,減小誤差;有系統預熱時間;
    •  Sysbench更傾向於測試Mysql性能,Tpcc更接近於業務
    •  運行測試程序需要同時監控機器負載,Mysql各項監控指標
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved