MySQL壓測工具mysqlslap的介紹與使用

yesye發表於2021-09-09

一、Mysqlslap介紹

mysqlslap是MySQL5.1之後自帶的benchmark基準測試工具,類似Apache Bench負載產生工具,生成schema,裝載資料,執行benckmark和查詢資料,語法簡單,靈活,容易使用。該工具可以模擬多個客戶端同時併發的向伺服器發出查詢更新,給出了效能測試資料而且提供了多種引擎的效能比較。mysqlslap為mysql效能最佳化前後提供了直觀的驗證依據,筆者建議系統運維人員應該掌握一些常見的壓力測試工具,這樣才能較為準確的掌握線上系統能夠支撐的使用者流量上限及其抗壓性等問題。

二、引數介紹

?


--auto-generate-sql  -a           自動生成MySQL測試語句--auto-generate-sql-add-autoincrement     新增AUTO_INCREMENT欄位--auto-generate-sql-execute-number=#     查詢的個數--auto-generate-sql-guid-primary       新增GUID欄位--auto-generate-sql-load-type=name      mixed:混合、update:更新、write:寫入、key:讀主鍵、read:查詢--auto-generate-sql-secondary-indexes=#    設定索引欄位個數--auto-generate-sql-unique-query-number=#   生成N條不同的query sql語句--auto-generate-sql-unique-write-number=#   生成N條不同的write sql語句--auto-generate-sql-write-number=#      每個執行緒write sql語句數量--commit=#                     設定每多少條sql語句提交一次--compress  -C                 啟用壓縮協議--concurrency=#  -c              客戶端數量(併發量)--create=name                   測試的SQL語句或檔案--create-schema=name               測試的資料名--csv=name                  生產CSV格式資料檔案--debug  -#                  寫除錯日誌(windows不可用) 如:mysqlslap -a -#"d:t:o,c:/debug.txt"--debug-check                   測試後列印除錯資訊(windows不可用)--debug-info  -T              列印記憶體和CPU的相關資訊--default-auth=plugin             驗證外掛--delimiter=str  -F             語句分隔符預設是 ;--detach=#                  執行N條語句後斷開重連--enable-cleartext-plugin           啟用明文身份驗證外掛--engine=engine_name  -e          測試引擎 如:mysqlslap -e"myisam"或-e"myisam,innodb"--help                    幫助資訊--host=host_name  -h            資料庫host--iterations=#  -i             重複執行的次數--login-path=name               登陸配置檔案--no-drop                   測試後不刪除schema--number-char-cols=#  -x          設定VARCHAR型別欄位數量--number-int-cols=#  -y           設定INT型別欄位數量--number-of-queries=#             每個客戶端執行sql語句數量--only-print                 僅顯示將被執行的SQL語句--delimiter選項影響--password=password  -p           資料庫密碼--pipe                    啟用管道--plugin-dir=path               外掛目錄--port=port_num  -P             資料庫埠--post-query=value              測試後執行的SQL語句--post-system=str               測試後執行的系統語句--pre-query=value               測試前執行的SQL語句--pre-system=str               測試前執行的系統語句--protocol=type                連結協議 tcp, socket, pipe--query=value  -q              測試的SQL語句 如:mysqlslap --query="SELECT * FROM t1"--secure-auth                 不要傳送密碼到伺服器--silent  -s                不顯示測試(靜音測試)--socket=path  -S              連線伺服器的socket--ssl-ca=file_name     --ssl-capath=dir_name     --ssl-cert=file_name     --ssl-cipher=cipher_list     --ssl-crl=file_name     --ssl-crlpath=dir_name     --ssl-key=file_name     --ssl-verify-server-cert     --user=user_name  -u            資料庫使用者名稱--verbose  -v                輸出更多的資訊--version  -V                版本資訊

三、簡單示例

1.分別測試100、200、400個併發執行10w條SQL。

?

1 mysqlslap -uroot -proot -h192.168.10.43 -P3306 --create-schema=chenmh --delimiter=";" --query="call pro_auto_select_pri" --concurrency=100,200,400 --number-of-queries=100000

注意:報告輸出的時間主要體現在執行完–number-of-queries指定的查詢所花的時間,這裡分別是100個併發、200個併發、400個併發執行10w條call所花的時間。預設不指定–iterations代表重複執行一次操作,如果重複執行N此輸出的時間也是反應的是單次迴圈所花的時間。

2.生成csv

?

1 mysqlslap -a -e"myisam,innodb" --csv="c:/a.csv"

四、總結

mysqlslap主要還是針對資料庫的效能測試,並且自動測試功能有限,而且生產報表也不夠詳細,所以建議還是使用sysbench來做基準測試。以上就是關於mysqlslap的全部介紹,希望對大家的學習或者工作帶來一定的幫助,如果有疑問大家可以留言交流。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2041/viewspace-2805880/,如需轉載,請註明出處,否則將追究法律責任。

相關文章