Mysqlslap 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=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
只打印測試語句而不現實履行
它的應用語法以下:
shell>/usr/local/mysql/bin/mysqlslap [options]
經常使用參數【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劇本。
解釋:
測試的進程須要生成測試表,拔出測試數據,這個mysqlslap可以主動生成,默許生成一個mysqlslap的schema,假如曾經存在則先刪除。可以用-only-print來打印現實的測試進程,全部測試完成後不會在數據庫中留下陳跡。
試驗步調:
演習一:
單線程測試。測試做了甚麼。
>./bin/mysqlslap -a -uroot -p111111
多線程測試。應用--concurrency來模仿並發銜接。
> ./bin/mysqlslap -a -c 100 -uroot -p111111
迭代測試。用於須要屢次履行測試獲得均勻值。
> ./bin/mysqlslap -a -i 10 -uroot -p111111
演習二:
> ./bin/mysqlslap -auto-generate-sql-add-autoincrement -a -uroot -p111111
> ./bin/mysqlslap -a -auto-generate-sql-load-type=read -uroot -p111111
> ./bin/mysqlslap -a -auto-generate-secondary-indexes=3 -uroot -p111111
> ./bin/mysqlslap -a -auto-generate-sql-write-number=1000 -uroot -p111111
> ./bin/mysqlslap --create-schema world -q "select count(*) from City" -uroot -p111111
> ./bin/mysqlslap -a -e innodb -uroot -p111111
> ./bin/mysqlslap -a --number-of-queries=10 -uroot -p111111
演習三:
履行一次測試,分離50和100個並發,履行1000次總查詢:
> ./bin/mysqlslap -a --concurrency=50,100 --number-of-queries 1000 --debug-info -uroot -p111111
50和100個並發分離獲得一次測試成果(Benchmark),並發數越多,履行完一切查詢的時光越長。為了精確起見,可以多迭代測試幾回:
> ./bin/mysqlslap -a --concurrency=50,100 --number-of-queries 1000 --iterations=5 --debug-info -uroot -p111111
測試同時分歧的存儲引擎的機能停止比較:
>./bin/mysqlslap -a --concurrency=50,100 --number-of-queries 1000 --iterations=5 --engine=myisam,innodb --debug-info -uroot -p111111