mysqlslap詳解--MySQL自帶的性能壓力測試工具(轉)


 本文的參考博客地址為:https://blog.csdn.net/fuzhongfaya/article/details/80943991 和 https://www.cnblogs.com/davygeek/p/5253830.html

本文的目的一方面是自己整理,防止后續忘記,一方面是對參考博客的進行驗證.

首先在這里介紹一下常用的參數及其說明:

--auto-generate-sql, -a 自動生成測試表和數據,表示用mysqlslap工具自己生成的SQL腳本來測試並發壓力。

--auto-generate-sql-load-type=type 測試語句的類型。代表要測試的環境是讀操作還是寫操作還是兩者混合的。取值包括:read,key,write,update和mixed(默認)。

--auto-generate-sql-guid-primary 增加基於GUID的主鍵

--auto-generate-sql-add-auto-increment 代表對生成的表自動添加auto_increment列,從5.1.18版本開始支持。
--number-char-cols=N, -x N 自動生成的測試表中包含多少個字符類型的列,默認1
--number-int-cols=N, -y N 自動生成的測試表中包含多少個數字類型的列,默認1
--number-of-queries=N 總的測試查詢次數(並發客戶數×每客戶查詢次數)
--query=name,-q 使用自定義腳本執行測試,例如可以調用自定義的一個存儲過程或者sql語句來執行測試。
--create-schema 代表自定義的測試庫名稱,測試的schema,MySQL中schema也就是database。
--commint=N 多少條DML后提交一次。
--compress, -C 如果服務器和客戶端支持都壓縮,則壓縮信息傳遞。
--concurrency=N, -c N 表示並發量,也就是模擬多少個客戶端同時執行select。可指定多個值,以逗號或者--delimiter參數指定的值做為分隔符。例如:--concurrency=100,200,500。
--engine=engine_name, -e engine_name 代表要測試的引擎,可以有多個,用分隔符隔開。例如:--engines=myisam,innodb。
--iterations=N, -i N 測試執行的迭代次數,代表要在不同並發環境下,各自運行測試多少次。
--only-print 只打印測試語句而不實際執行。
--detach=N 執行N條語句后斷開重連。
--debug-info, -T 打印內存和CPU的相關信息。

 

執行測試:

1.執行測試並打印測試的詳細過程:mysqlslap -a -uroot -proot  --only-print

 可以看到執行測試的過程首先是創建schema ,然后再是創建表,測試結束的時候回刪除表以及刪除schema

 

 

2.分別用50和100個客戶端連接去測試100條查詢

 mysqlslap -a -uroot -proot --concurrency=50,100 --number-of-queries=100

 可以看到對應的每個連接上分配到的查詢數平均值分別為2和1 

 

3. 實際測試中的復雜情況。 

使用 --number-int-cols 選項,指定表中會包含 4 個 int 型的列。 
使用 --number-char-cols 選項,指定表中會包含 35 個 char 型的列。 
使用 --engine 選項,指定針對何種存儲引擎進行測試。 

mysqlslap –uroot -proot --concurrency=50 --iterations=1 --number-int-cols=2--number-char-cols=1 --auto-generate-sql --auto-generate-sql-add-autoincrement --auto-generate-sql-load-type=mixed --engine=myisam,innodb --number-of-queries=200 --only-print

 

可以看出生成的默認sql語句和表結構已經有了變化,除了自增列外包含2個數字列和一個varchar 列

 

 4、實現基於自定義的sql語句進行性能測試

mysqlslap –uroot -proot --delimiter=";" --create="CREATE TABLE a (b int);INSERT INTO a VALUES (23)" --query="SELECT * FROM a" --concurrency=50 --iterations=200

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM