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