壓力測試工具MySqlSlap

2021-10-01 02:39:09 字數 3184 閱讀 2215

mysqlslap是從mysql5.1.4版本開始官方提供的壓力測試工具,可用於測試mysql伺服器的瓶頸。

mysqlslap在測試過程的做的事情: 引數

作用- -create-schema=name

指定測試的資料庫名,預設是mysqlslap

- -engine=name

建立測試表所使用的儲存引擎,可指定多個

- -concurrency=n

模擬n個客戶端併發執行。可指定多個值,以逗號分隔

- -number-of-queries=n

總的測試查詢次數(併發客戶數×每客戶查詢次數)

比如併發是10,總次數是100,那麼10個客戶端各執行10個

- -iterations=n

迭代執行的次數,即重複的次數(相同的測試進行n次,求乙個平均值)

指的是整個步驟的重複次數,包括準備資料、測試load、清理

- -commit=n

執行n條dml後提交一次

- -auto-generate-sql, -a

自動生成測試表和資料

表示用mysqlslap工具自己生成的sql指令碼來測試併發壓力

- -auto-generate-sql-load-type=name

測試語句的型別。代表要測試的環境是讀操作還是寫操作還是兩者混合的。

取值包括:read (scan tables), write (insert into tables), key (read primary keys),

update (update primary keys), mixed (half inserts, half scanning selects)

預設值是:mixed

- -auto-generate-sql-add-auto-increment

對生成的表自動新增auto_increment列

- -number-char-cols=name

自動生成的測試表中包含n個字元型別的列,預設1

- -number-int-cols=name

自動生成的測試表中包含n個數字型別的列,預設1

- -debug-info

- -debug-info

接下來我們來依據上表中的引數進行一些測試,如下:

1000個客戶端,重複10次,自動生成sql語句,總共1000個查詢,即每個客戶端執行一次查詢

mysqlslap -a -u賬號 -p密碼 --concurrency=1000 --number-of-queries=1000 --iterations=10 --auto-generate-sql-add-autoincrement --engine=innodb

然後我們測試上述的命令,這裡我們可以找到mysql安裝目錄下的bin檔案中的mysqlslap.exe執行

當然我們還可以在cmd中進行執行,我們在cmd中切換至上述的bin目錄下,執行命令

我們發現執行報錯了,網上查詢發現說在my.ini檔案中用character_set_server=utf8來取代default-character-set=utf8,這裡我們也可以直接將其注釋,然後再進行執行。

執行成功後,我們從結果中就可以看出其平均、最小、最大執行時間,以及總執行次數,每個客戶端執行的次數和執行的引擎。

1、50、100、200個客戶端,每一次測試3次,並列印記憶體、cpu資訊

mysqlslap -u賬號 -p密碼 --concurrency=1,50,100 --iterations=3 --number-char-cols=5 --number-int-cols=5 --auto-generate-sql --auto-generate-sql-add-autoincrement --engine=myisam,innodb --create-schema='kamitest'

mysqlslap新增–debug-info後,除了直接的測試結果外,還輸出了測試環境的一些資訊,如下:

在windows下測試- -debug-info引數,未能列印出相關資訊,可以在linux環境下進行嘗試。

最後我們來看一下我們優化的衡量指標:

在資料庫中是可以進行檢視其tps和qps的,我們可以直接在information_schema進行查詢的,如查詢tps:

use information_schema;

select variable_value into @num_com from global_status where variable_name ='com_commit';

select variable_value into @num_roll from global_status where variable_name ='com_rollback';

select variable_value into @uptime from global_status where variable_name ='uptime';

select (@num_com+@num_roll)/@uptime;

查詢qps:

use information_schema;

select variable_value into @num_queries from global_status where variable_name ='questions';

select variable_value into @uptime from global_status where variable_name ='uptime';

select @num_queries/@uptime;

MySQL壓力測試工具mysqlslap簡介

可以使用mysqlslap客戶端工具對mysql伺服器進行壓力測試,具體使用方法可以參考 man mysqlslap 或者info mysqlslap幫助文件 mysql從5.1.4版開始帶有乙個壓力測試工具mysqlslap,通過模擬多個併發客戶端訪問 mysql來執行測試。man mysqlsl...

mysql壓力測試工具Mysqlslap

mysql 效能測試工具 the mysql benchmark suite 不支援多cpu而且不是壓力工具 壓力測試工具 mysql super smack 需要找能連線外網的機器,能連線外網的機器不一定支援壓力 mybench 測試資料的使用比較麻煩 mysqlslap mysql自帶的,無需額...

mysqlslap 效能測試工具

mysqlslap 效能測試工具 常用引數 concurrency 代表併發數量,多個可以用逗號隔開。例如 concurrency 50,200,500 engines 代表要測試的引擎,可以有多個,用分隔符隔開。例如 engines myisam,innodb,memory iterations ...