mysqlslap介紹和使用

mysqlslap介紹和使用

mysqlslap是一個MySQL自帶的負載仿真工具,它可以在模擬多個客戶端對MySQL服務器進行併發執行SQL語句,還可以指定存儲引擎。

1. 調用方式

$./mysqlslap [options]

2. 執行步驟

mysqlslap分三個階段運行

  1. 創建數據庫,表以及可選的任何存儲程序或數據以用於測試。此階段使用單個客戶端連接。
  2. 運行負載測試。此階段可以使用許多客戶端連接。
  3. 清理(斷開連接,刪除表–如果指定的話)。此階段使用單個客戶端連接。

3. 測試方式

mysqlslap有三種測試方式

3.1 指定SQL語句

--create:指定表創建語句和插入語句。
--query:指定查詢時執行的語句,不一定要是Select語句,可以是任意SQL語句。
--delimiter:指定分隔符爲";"
--concurrency: 併發時模擬客戶端的數量。可以指定多個值逗號隔開。
--iterations: 測試執行的次數。

使用create和query指定SQL語句,5個客戶端併發查詢,執行10次。

$./mysqlslap --delimiter=";"
  --create="CREATE TABLE `t1` (intcol1 INT(32) ,intcol2 INT(32) );"
  --query="SELECT * FROM t1" --concurrency=5 --iterations=10

3.2 自動生成SQL

--auto-generate-sql:指定自動生成查詢語句,還有其他–auto開頭參數可以具體配置查詢內容。
--number-int-cols:指定創建表有幾個INT列
--number-char-cols: 指定創建表有幾個VARCHAR列

自動生成SQL語句測試,使用的表有2個INT列,2個VARCHAR,5個客戶端併發查詢,執行10次。

$./mysqlslap --concurrency=5 --iterations=10
  --number-int-cols=2 --number-char-cols=2
  --auto-generate-sql

3.3 指定SQL文件

--create--query還可以指定文件,語句以分隔符分開,注意文件中不能包含註釋。

--create:指定文件,文件中包含多個以分隔符分隔的語句,表創建語句和插入語句。
--query:指定文件,文件將包含多個以分隔的查詢語句,不一定要是Select語句,可以是任意SQL語句。
--delimiter:指定分隔符。

$./mysqlslap --concurrency=5 --iterations=10 --delimiter=";"
	--query=query.sql --create=create.sql 

4. 選項

mysqlslap 支持以下選項

選項名 描述
--auto-generate-sql 文件中未提供或未使用命令選項時自動生成SQL語句
--auto-generate-sql-add-autoincrement 將AUTO_INCREMENT列添加到自動生成的表中
--auto-generate-sql-execute-number 指定自動生成多少個查詢
--auto-generate-sql-guid-primary 將基於GUID的主鍵添加到自動生成的表中
--auto-generate-sql-load-type 指定測試負載類型,代表要測試的是讀還是寫還是兩者混合的(read,write,update,mixed)
--auto-generate-sql-secondary-indexes 指定要添加到自動生成的表中的二級索引的數量
--auto-generate-sql-unique-query-number 爲自動測試生成多少個不同的查詢
--auto-generate-sql-unique-write-number 爲–auto-generate-sql-write-number生成多少個不同的查詢
--auto-generate-sql-write-number 每個線程要執行多少行插入
--commit 提交前要執行多少條語句
--compress 壓縮客戶端和服務器之間發送的所有信息
--concurrency 併發時要模擬的客戶端數量
--create 包含用於創建表的語句的文件或字符串
--create-schema 運行測試的schema
--csv 生成以逗號分隔的值格式的輸出
--debug Write 編寫調試日誌
--debug-check 程序退出時打印調試信息
--debug-info 程序退出時打印調試信息,內存和CPU統計信息
--default-auth 身份驗證插件使用
--defaults-extra-file 除了通常的選項文件,還讀取命名的選項文件
--defaults-file 只讀命名的選項文件
--defaults-group-suffix 選項組後綴值
--delimiter 在SQL語句中使用的定界符
--detach 在每條N條語句後分離(關閉並重新打開)每個連接
--enable-cleartext-plugin 啓用明文身份驗證插件
--engine 用於創建表的存儲引擎
--help 顯示幫助信息並退出
--host MySQL服務器所在的主機
--iterations 運行測試的次數
--login-path 從.mylogin.cnf中讀取登錄路徑選項
--no-defaults 不讀取選項文件
--no-drop 不要刪除測試運行期間創建的任何schema
--number-char-cols 如果指定了–auto-generate-sql,則要使用的VARCHAR列數
--number-int-cols 如果指定了–auto-generate-sql,則要使用的INT列數
--number-of-queries 將每個客戶端限制爲大約此查詢數量
--only-print 不連接數據庫。只打印它會做的事情
--password 連接服務器時使用的密碼
--pipe 使用命名管道連接到服務器(僅Windows)
--plugin-dir 安裝插件的目錄
--port 用於連接的TCP / IP端口號
--post-query 包含要在測試完成後執行的語句的文件或字符串
--post-system 測試完成後使用system()執行的字符串
--pre-query 包含要在運行測試之前執行的語句的文件或字符串
--pre-system 在運行測試之前使用system()執行的字符串
--print-defaults 打印默認選項
--protocol 使用的連接協議
--query 包含用於檢索數據的SELECT語句的文件或字符串
--secure-auth 不要以舊(4.1之前)格式向服務器發送密碼
--shared-memory-base-name 用於共享內存連接的共享內存的名稱
--silent 靜音模式
--socket Unix套接字文件或Windows命名管道使用
--ssl 啓用連接加密
--ssl-ca 包含受信任的SSL證書頒發機構列表的文件
--ssl-capath 包含受信任的SSL證書頒發機構證書文件的目錄
--ssl-cert 包含X.509證書的文件
--ssl-cipher 連接加密的允許密碼
--ssl-crl 包含證書吊銷列表的文件
--ssl-crlpath 包含證書吊銷列表文件的目錄
--ssl-key 包含X.509密鑰的文件
--ssl-mode 與服務器連接的所需安全狀態
--ssl-verify-server-cert 根據服務器證書的公用名身份驗證主機名
--user 連接服務器時要使用的MySQL用戶名
--verbose 詳細模式
--version 顯示版本信息並退出

5. 常用參數

--auto-generate-sql:自動生成SQL語句。
--auto-generate-sql-execute-number:指定自動生成多少個查詢。
--auto-generate-sql-load-type:指定測試負載類型,read,write,update,mixed。
--number-char-cols: 如果指定了–auto-generate-sql,則要使用的VARCHAR列數。
--number-int-cols: 如果指定了–auto-generate-sql,則要使用的INT列數。
--concurrency: 併發時要模擬的客戶端數量。
--iterations: 運行測試的次數。
--create: 包含用於創建表的語句的文件或字符串。
--query: 包含用於檢索數據的SELECT語句的文件或字符串。
--delimiter: 在SQL語句中使用的定界符。
--engine: 用於創建表的存儲引擎,值可以通過“show engines;”命令查看。
--help: 顯示幫助信息並退出。
--no-drop: 不要刪除測試運行期間創建的任何schema。schema在MySQL對應的是數據庫。
--only-print: 不連接數據庫。只打印它會做的事情。可用於查看測試執行的語句。
--post-query: 包含要在測試完成後執行的語句的文件或字符串。SQL語句。
--post-system: 測試完成後使用system()執行的字符串。系統命令。
--pre-query: 包含要在運行測試之前執行的語句的文件或字符串。SQL語句。
--pre-system: 在運行測試之前使用system()執行的字符串。系統命令。

6.查詢結果

Benchmark
	Average number of seconds to run all queries: 149.766 seconds
	Minimum number of seconds to run all queries: 149.766 seconds
	Maximum number of seconds to run all queries: 149.766 seconds
	Number of clients running queries: 5
	Average number of queries per client: 100

Average number of seconds to run all queries: 所有查詢的平均時間。
Minimum number of seconds to run all queries: 所有查詢的最短時間。
Maximum number of seconds to run all queries: 所有查詢的最長時間。
Number of clients running queries: 併發模擬客戶端數量,對應–concurrency配置值。
Average number of queries per client: 平均每個客戶端執行語句數量。自動生成語句時,由--auto-generate-sql-execute-number指定。或者是--number-of-queries指定,平均執行數=--number-of-queries/--concurrency

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章