mysql基礎測試 mysql基礎測試

2021-10-19 01:58:37 字數 3851 閱讀 5762

測試原因

為什麼需要做效能測試

模擬比當前系統更高的負載,找出效能瓶頸

重現線上異常

測試不同硬體軟體配置

規劃未來的業務增長

測試分類

效能測試的分類

裝置層的測試

業務層的測試

資料庫層的測試

裝置層的測試

關注哪些指標

伺服器,磁碟效能

磁碟壞塊率

伺服器壽命

業務層測試

針對業務進行測試

資料庫層的測試

什麼情況下要做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各項監控指標

mysql基礎測試 mysql學習筆記之基礎測試

10.基礎測試 10.1 sysbench 基準測試 10.1.1 本地安裝 2.安裝依賴包 shell yum install y automake libtool yum install y mysql devel 3.執行安裝 shell cd sysbench autogen.sh conf...

mysql基礎測試

測試原因 為什麼需要做效能測試 測試分類 效能測試的分類 裝置層的測試 業務層測試 資料庫層的測試 mysql測試分類 4小類 常用的測試工具 針對業務編寫效能測試工具 效能測試衡量指標 服務響應時間 服務併發性 正在工作中的併發操作,或者是同時工作中的執行緒數或者連線數。例如乙個web站點 同時有...

MySQL基礎小測試(八)

請利用事務實現在使用者下訂單後,驗證使用者購買的商品數量是否超過了商品的庫存量.商品訂單表 sh order goods如果商品庫存不足,則阻止訂單建立.檢視sh order goods訂單商品表 select id,order id,goods id,goods num from sh order...