天天看點

用mysqlslap進行mysql壓力測試

mysqlslap是一個mysql官方提供的壓力測試工具,通過模拟多個并發用戶端通路mysql來執行測試,使用起來非常的簡單。通過mysqlslap--help可以獲得可用的選項。

下面我們就來看看一些比較重要的參數:

--defaults-file,配置檔案存放位置

--create-schema,測試的schema,MySQL中schema也就是database

--concurrency,并發數

--engines,測試引擎,可以有多個,用分隔符隔開。

--iterations,疊代的實驗次數

--socket,socket,檔案位置

--debug-info,列印記憶體和CPU的資訊

--only-print,隻列印測試語句而不實際執行

--auto-generate-sql,自動産生測試SQL

--auto-generate-sql-load-type,測試SQL的類型。類型有mixed,update,write,key,read。

--number-of-queries,執行的SQL總數量

--number-int-cols,表内int列的數量--number-char-cols,表内char列的數量

--query=name,使用自定義腳本執行測試,例如可以調用自定義的一個存儲過程或者sql語句來執行測試。

測試例子如下:[root@localhost~]#

/usr/local/mysql/bin/mysqlslap--defaults-file=/etc/my.cnf--concurrency=200--iterations=1--number-int-cols=1--auto-generate-sql--auto-generate-sql-load-type=write--engine=myisam,innodb--number-of-queries=200-S/tmp/mysql.sock--debug-info-uroot-p123Benchmark

Runningforenginemyisam

Averagenumberofsecondstorunallqueries:0.087secondsMinimumnumberofsecondstorunallqueries:0.087secondsMaximumnumberofsecondstorunallqueries:0.087secondsNumberofclientsrunningqueries:200Averagenumberofqueriesperclient:1Benchmark

Runningforengineinnodb

Averagenumberofsecondstorunallqueries:0.551secondsMinimumnumberofsecondstorunallqueries:0.551secondsMaximumnumberofsecondstorunallqueries:0.551secondsNumberofclientsrunningqueries:200Averagenumberofqueriesperclient:1Usertime0.03,Systemtime0.05

Maximumresidentsetsize0,Integralresidentsetsize0Non-physicalpagefaults2826,Physicalpagefaults0,Swaps0Blocksin0out0,Messagesin0out0,Signals0

Voluntarycontextswitches3340,Involuntarycontextswitches96

對于INNODB引擎,200個用戶端同時運作這些SQL語句平均要花0.551秒。相應的MYISAM為0.087秒,測試結果也很簡明,就不多少說了。指定資料庫的測試:

--create-schema,指定資料庫名稱

--query,指定SQL語句,可以定位到某個包含SQL的檔案[root@localhost~]#/usr/local/mysql/bin/mysqlslap

--defaults-file=/etc/my.cnf--concurrency=50--iterations=1--create-schema=test--query=/root/test.sql-S/tmp/mysql.sock-uroot-p123Benchmark

Averagenumberofsecondstorunallqueries:0.021secondsMinimumnumberofsecondstorunallqueries:0.021secondsMaximumnumberofsecondstorunallqueries:0.021secondsNumberofclientsrunningqueries:50Averagenumberofqueriesperclient:1

mysqlslap --defaults-file=/usr/local/mysql-maria/my.cnf --concurrency=25,50,100 --iterations=1 --create-schema='t_girl' --query='call sp_get_article(2,10,1);' --number-of-queries=5000 --debug-info -uroot -p -S/tmp/mysql50.sock