centos7中mysql自帶壓測工具mysqlslap使用

weixin_34205076發表於2017-11-27

mysqlslap --help


1.1.1遠端連線測試

mysqlslap -a -h"10.10.10.92" -P3306


1.1.2分別併發50和100,總查詢1000次,迭代5次,本機賬號密碼連線測試,輸出CPU資訊

mysqlslap -a --concurrency=50,100 --number-of-queries 1000 --iterations=5 --debug-info -uroot -p110120


1.1.3自己看監控效果

mysqlslap -a --concurrency=50,100 --number-of-queries 100000 --iterations=5 --debug-info -uroot -p110120


1.3mysqlslap詳解(部分重要引數詳解)

–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=name,-q 

使用自定義指令碼執行測試,例如可以呼叫自定義的一個儲存過程或者sql語句來執行測試。 

–create-schema 

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

–commint=N 

多少條DML後提交一次 

–compress, -C 

如果伺服器和客戶端支援都壓縮,則壓縮資訊傳遞 

–concurrency=N, -c N 

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

–engine=engine_name, -e engine_name 

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

–iterations=N, -i N 

測試執行的迭代次數 

–detach=N 

執行N條語句後斷開重連 

–debug-info, -T 

列印記憶體和CPU的資訊 

–only-print 

只列印測試語句而不實際執行


1.4常用引數(options)詳細介紹: 

--concurrency代表併發數量,多個可以用逗號隔開。例如:--concurrency=50,200,500 

--engines代表要測試的引擎,可以有多個,用分隔符隔開。例如:--engines=myisam,innodb,memory 

--iterations代表要在不同併發環境下,各自執行測試多少次

--auto-generate-sql 代表用mysqlslap工具自己生成的SQL指令碼來測試併發壓力 

--auto-generate-sql-add-auto-increment 代表對生成的表自動新增auto_increment列,從5.1.18版本開始, 

--auto-generate-sql-load-type 代表要測試的環境是讀操作還是寫操作還是兩者混合的(read,write,update,mixed) 

--number-of-queries 代表總共要執行多少條查詢 

--debug-info 代表要額外輸出CPU以及記憶體的相關資訊 

--number-int-cols 代表示例表中的INTEGER型別的屬性有幾個 

--number-char-cols代表示例表中的vachar型別的屬性有幾個

--create-schema 代表自定義的測試庫名稱

--query 代表自定義的測試SQL指令碼


1.5舉例

單執行緒測試。測試做了什麼 

mysqlslap -a -uroot -p110120 

多執行緒測試。使用--concurrency來模擬併發連線 

mysqlslap -a -c 100 -uroot -p110120 

迭代測試。用於需要多次執行測試得到平均值

mysqlslap -a -i 10 -uroot -p110120

自定義測試

mysqlslap --create-schema=test -q"select * from user"


1.6php海量資料測試mysql

vi php-mysql.php

<?php  

//new the class 例項化資料構造類  

$ds = new DataServ();  

//set iptions for mysql connect  

$ds->sethost("127.0.0.1");     //mysql伺服器地址  

$ds->setuser("root");//mysql使用者名稱  

$ds->setpasswd("root");//mysql 使用者密碼  

$ds->setdb("dbname");//資料庫密碼  

$ds->settable("house_agency");//表名  

/**set fields and value  

* rand int like array("int",min,max) 

* rand string like array("string",minlen,manlen) 

* increment int like array("increment",minvalue,step) step default 1,minvalue default 0 

* string like "admin"  

* int like 0  

*/  

/**設定欄位及值 

* 隨機數字型別 array("int",min,max) min最小隨機數字,max最大隨機數字 

* 隨機字串 array("string",minlen,manlen) minlen字串最小長度,maxlen字串最大長度 

* 自增長數字型別 array("increment",minvalue,step) minvalue最小值,預設為1,step步長,最小為1 ,其中""表示自增長 

* 字串型別 "admin"  

* 數字型別 0  

*/  

$ds->setfields(  

          array("agencyid"=>array("increment",0,2),  

                "name"=>array("int",20,50),       

                "address"=>array("string",20,50),  

                "icon"=>"icon",  

                "bgimg"=>"bgimg",  

                "mainbusiness"=>1,  

                "adminname"=>"admin",  

                "isopen"=>1,     

                "vieworder"=>1   

          )  

);  

//create data file (start,end)   

//建立資料10條資料  

$ds->create(1,100000000);  

//load data file into mysql      

//加裁資料到資料庫  

$ds->loaddata();

?>


本文轉自 guowang327 51CTO部落格,原文連結:http://blog.51cto.com/guowang327/1721940,如需轉載請自行聯絡原作者

相關文章