程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MYSQL入門知識 >> Mysql壓力測試工具 - Mysqlslap使用教程

Mysql壓力測試工具 - Mysqlslap使用教程

編輯:MYSQL入門知識
 

MySQL從5.1.4版開始帶有一個壓力測試工具mysqlslap,通過模擬多個並發客戶端訪問mysql來執行測試,

使用起來非常的簡單。通過mysqlslap --help可以獲得可用的選項,這裡列一些主要的參數,更詳細的說明參

考官方手冊。


--auto-generate-sql, -a
自動生成測試表和數據

--auto-generate-sql-load-type=type
測試語句的類型。取值包括:read,key,write,update和mixed(默認)。

--number-char-cols=N, -x N
自動生成的測試表中包含多少個字符類型的列,默認1

--number-int-cols=N, -y N
自動生成的測試表中包含多少個數字類型的列,默認1

--number-of-queries=N
總的測試查詢次數(並發客戶數×每客戶查詢次數)

--query='SQL',(--query縮寫為-q)
使用自定義腳本執行測試,例如可以調用自定義的一個存儲過程或者sql語句來執行測試。

--create-schema
測試的schema,MySQL中schema也就是database,指定需要測試地數據庫

--ommint=N
多少條DML後提交一次

--compress, -C
如果服務器和客戶端支持都壓縮,則壓縮信息傳遞

–concurrency=N, -c N
並發量,也就是模擬多少個客戶端同時執行select。可指定多個值,以逗號或者–delimiter參數指定的值做為分隔符

--engine=engine_name, -e engine_name
創建測試表所使用的存儲引擎,可指定多個,可以測試sql在不同引擎下地效果

--terations=N, -i N
測試執行的迭代次數

--detach=N
執行N條語句後斷開重連

--debug-info, -T
打印內存和CPU的信息

--only-print
只打印測試語句而不實際執行

下面是我在ubuntu上測試的一個例子:

root@Cyrec-desktop:~# mysqlslap --concurrency=50,100 --number-of-queries 1000 --debug-info --create-schema='student' --iterations=5 --engine=myisam,innodb --query='select * from student limit 20' -uroot -pxxxx > log.txt

解釋一下: --concurrency=50,100分別模擬50和100個並發的情況,--number-of-queries 總共執行查詢

1000次, --create-schema='student'設置執行sql的數據庫,開始測試地時候沒寫這個選項報如下錯誤:

mysqlslap: Error when connecting to server: 1049 Unknown database 'mysqlslap',找了很久才發現

原來我開始沒看到 --create-schema參數可以選擇數據庫,將選擇數據庫寫成了sql'use student;'放入--query

參數中,結果就報錯 --iterations=5設置迭代數,可以增加准確度。 --query='select * from student limit 20'測

試的sql語句(我是隨便寫的)當然還可以執行一些事務處理的sql不過就要申明使用innodb引擎。-u root

-pxxxx輸入數據庫的用戶名密碼 ,最後 > log.txt是將結果導出到文件中,也可以不導出直接在終端查看結果。

測試地結果如下:

Benchmark
Running for engine myisam
Average number of seconds to run all queries: 0.392 seconds
Minimum number of seconds to run all queries: 0.338 seconds
Maximum number of seconds to run all queries: 0.443 seconds
Number of clients running queries: 50
Average number of queries per client: 20

Benchmark
Running for engine myisam
Average number of seconds to run all queries: 0.433 seconds
Minimum number of seconds to run all queries: 0.411 seconds
Maximum number of seconds to run all queries: 0.486 seconds
Number of clients running queries: 100
Average number of queries per client: 10

Benchmark
Running for engine innodb
Average number of seconds to run all queries: 0.361 seconds
Minimum number of seconds to run all queries: 0.331 seconds
Maximum number of seconds to run all queries: 0.407 seconds
Number of clients running queries: 50
Average number of queries per client: 20

Benchmark
Running for engine innodb
Average number of seconds to run all queries: 0.446 seconds
Minimum number of seconds to run all queries: 0.372 seconds
Maximum number of seconds to run all queries: 0.550 seconds
Number of clients running queries: 100
Average number of queries per client: 10


User time 0.12, System time 4.36
Maximum resident set size 4180, Integral resident set size 0
Non-physical pagefaults 8852, Physical pagefaults 1, Swaps 0
Blocks in 192 out 0, Messages in 0 out 0, Signals 0
Voluntary context switches 35791, Involuntary context switches 2393
 

總結:mysqlslap內置工具使用比較方便,可以模擬並發以及不同mysql引擎來進行sql的測試。
 

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