一、mysqlslap介紹
二、使用方法介紹
可以使用mysqlslap --help來顯示使用方法:
1) --concurrency代表并發數量,多個可以用逗号隔開,例如:concurrency=10,50,100, 并發連接配接線程數分别是10、50、100個并發。
2) --engines代表要測試的引擎,可以有多個,用分隔符隔開。
3) --iterations代表要運作這些測試多少次。
5)--auto-generate-sql-load-type 代表要測試的是讀還是寫還是兩者混合的(read,write,update,mixed)
6) --number-of-queries 代表總共要運作多少次查詢。每個用戶端運作的查詢數量可以用查詢總數/并發數來計算。
7) --debug-info 代表要額外輸出cpu以及記憶體的相關資訊。
8) --number-int-cols :建立測試表的 int 型字段數量
9) --auto-generate-sql-add-autoincrement : 代表對生成的表自動添加auto_increment列,從5.1.18版本開始
10) --number-char-cols 建立測試表的 char 型字段數量。
11) --create-schema 測試的schema,mysql中schema也就是database。
12) --query 使用自定義腳本執行測試,例如可以調用自定義的一個存儲過程或者sql語句來執行測試。
13) --only-print 如果隻想列印看看sql語句是什麼,可以用這個選項。
三、demo執行個體
下面我們使用幾個demo執行個體來進行測試
1、demo1:
[root@localhost ~]# mysqlslap -uroot -p123abc --concurrency=100 --iterations=1 --auto-generate-sql --auto-generate-sql-load-type=mixed --auto-generate-sql-add-autoincrement --engine=myisam --number-of-queries=10 --debug-info
#備注本次測試以100個并發線程、測試1次,自動生成sql測試腳本、讀、寫、更新混合測試、自增長字段、測試引擎為myisam、共運作10次查詢,輸出cpu資源資訊
傳回資訊如下所示:
rement --engine=myisam --number-of-queries=10 --debug-info
benchmark
running for engine myisam
average number of seconds to run all queries: 0.129 seconds
minimum number of seconds to run all queries: 0.107 seconds
maximum number of seconds to run all queries: 0.264 seconds
number of clients running queries: 100
average number of queries per client: 0
user time 0.16, system time 0.25
maximum resident set size 4624, integral resident set size 0
non-physical pagefaults 7346, physical pagefaults 0, swaps 0
blocks in 0 out 0, messages in 0 out 0, signals 0
voluntary context switches 27221, involuntary context switches 4241
2、demo2:指定資料庫和sql語句
mysqlslap -h192.168.202.84 -p3309 --concurrency=100 --iterations=1 --create-schema='mms_sdmtv' --query='select * from role;' --number-of-queries=10 --debug-info -uroot -p123abc
#備注使用mysqlslap指定sql語句進行測試
3、demo3:測試用例
[root@localhost /]# mysqlslap --concurrency=50,100,200 --iterations=20 --number-int-cols=4 --number-char-cols=35 --auto-generate-sql --auto-generate-sql-add-autoincrement --auto-generate-sql-load-type=read --engine=myisam,innodb --number-of-queries=200 --verbose --socket=/var/lib/mysql/mysql.sock -uroot -p123abc
#系統腳本測試,增加int型 4列char 型35列,測試2種引擎myisam,innodb讀的性能,分别用50,100,200個用戶端對伺服器進行測試總共200個查詢語句 執行20次查詢
average number of seconds to run all queries: 0.666 seconds
minimum number of seconds to run all queries: 0.223 seconds
maximum number of seconds to run all queries: 4.889 seconds
number of clients running queries: 50
average number of queries per client: 4
average number of seconds to run all queries: 0.620 seconds
minimum number of seconds to run all queries: 0.231 seconds
maximum number of seconds to run all queries: 4.898 seconds
average number of queries per client: 2
average number of seconds to run all queries: 0.503 seconds
minimum number of seconds to run all queries: 0.257 seconds
maximum number of seconds to run all queries: 4.269 seconds
number of clients running queries: 200
average number of queries per client: 1
running for engine innodb
average number of seconds to run all queries: 1.049 seconds
minimum number of seconds to run all queries: 0.244 seconds
maximum number of seconds to run all queries: 5.292 seconds
average number of seconds to run all queries: 0.712 seconds
minimum number of seconds to run all queries: 0.246 seconds
maximum number of seconds to run all queries: 6.585 seconds
average number of seconds to run all queries: 0.269 seconds
minimum number of seconds to run all queries: 0.175 seconds
maximum number of seconds to run all queries: 0.328 seconds
4、自建sql測試用例
mysqlslap --create=/yourpath/test1.sql --query=/yourpath/test2.sql --concurrency=50,100,200 --iterations=20 --engine=myisam,innodb -u root -p123abc
#在設定的yourpath目錄下建立你的測試sql文test1及test2并進行50、100及200的模拟并發測試
最新内容請見作者的github頁:http://qaseven.github.io/