Mysql 數據庫壓力測試工具 - MySqlSlap

MySQLSlap是從MySQL的5.1.4版引入的壓力測試工具。該工具我們可以在Mysql的安裝目錄的bin目錄裏面找到,如C:\Program Files\MySQL\MySQL Server 5.7\bin>

名詞解釋

  • TPSTransactions Per Second(每秒傳輸的事物處理個數),這是指服務器每秒處理的事務數,支持事務的存儲引擎如InnoDB等特有的一個性能指標。 TPS = (COM_COMMIT + COM_ROLLBACK)/UPTIME
  • QPSQueries Per Second(每秒查詢處理量)同時適用與InnoDB和MyISAM 引擎。QPS=QUESTIONS/UPTIME
  • 等待時間:執行Sql等待返回結果之間的等待時間

主要功能

  • 創建測試庫、測試表、測試表結構 ;
  • 運行負載測試,可以使用多個併發客戶端連接;
  • 測試環境清理(刪除創建的數據、表等,斷開連接);

主要參數

…參數 作用
--create-schema=name 指定測試的數據庫名,默認是mysqlslap。
--engine=engine_name,-e engine_name 代表要測試表的引擎,可以有多個用逗號分隔符隔開,如:--engines=myisam,innodb
--concurrency=N,-c N 模擬N個客戶端併發執行。可指定多個值,以逗號隔開,如:--concurrency=1,50,100,200
--number-of-queries=N 總的測試查詢次數(併發客戶數×每客戶查詢次數),比如併發是10,總次數是100,那麼10個客戶端各執行10個
--iterations=N,-i N 迭代執行的次數,即重複的次數(相同的測試進行N次,求一個平均值),指的是整個步驟的重複次數,包括準備數據、測試load、清理。
--commit=N 執行N條DML後提交一次。
--auto-generate-sql, -a 自動生成測試表和數據,表示用mysqlslap工具自己生成的SQL腳本來測試併發壓力。
--auto-generate-sql-load-type=name 測試語句的類型。代表要測試的環境是讀操作還是寫操作還是兩者混合的。

取值包括:read(scan tables), write (insert into tables), key(read primary keys), update(update primary keys), or mixed(half inserts, half scanning selects). 默認值是:mixed
--auto-generate-sql-add-auto-increment 對生成的表自動添加auto_increment列。
--number-char-cols=name,-x N 自動生成的測試表中包含N個字符類型的列,默認1。
--number-int-cols=name,-y N 自動生成的測試表中包含N個數字類型的列,默認1。
--debug-info 打印內存和CPU的信息。
--compress, -C 如果服務器和客戶端支持都壓縮,則壓縮信息傳遞。
--only-print 只打印測試語句而不實際執行。

命令示例

  1. 併發數100,循環10次,主動建表和生成數據,指定表引擎爲innodb,總的查詢次數爲100:
mysqlslap -uroot -proot --concurrency=100  --iterations 10 -a  --auto-generate-sql-add-autoincrement --engine=innodb --number-of-queries=100

-uroot -proot:是數據庫用戶名和密碼

輸出結果:

PS C:\Program Files\MySQL\MySQL Server 5.7\bin> ./mysqlslap -uroot -proot --concurrency=100  --iterations 10 -a  --auto-generate-sql-add-autoincrement --engine=innodb --number-of-queries=100
Benchmark
        Running for engine innodb
        Average number of seconds to run all queries: 0.175 seconds
        Minimum number of seconds to run all queries: 0.031 seconds
        Maximum number of seconds to run all queries: 1.078 seconds
        Number of clients running queries: 100
        Average number of queries per client: 1
  • Running for engine innodb:運行的存儲引擎是innodb
  • Average number of seconds to run all queries: 0.175 seconds:運行所有查詢的平均秒數。
  • Minimum number of seconds to run all queries: 0.031 seconds:運行所有查詢的最小秒數。
  • Maximum number of seconds to run all queries: 1.078 seconds:運行所有查詢的最大秒數。
  • Number of clients running queries: 100:運行查詢的客戶端數(併發數)。
  • Average number of queries per client: 1:平均每個客戶的查詢數量。
  1. 分別執行1,50,100,200的併發,循環3次,表有5個字符串字段,5個int型字段,自動創建建數據,新增自動自動增長列,分別測試myisam,innodb兩個引擎,指定測試庫的名稱爲enjoytest1,輸出內存情況
mysqlslap -uroot -proot  --concurrency=1,50,100,200 --iterations=3 --number-char-cols=5 --number-int-cols=5 --auto-generate-sql --auto-generate-sql-add-autoincrement  --engine=myisam,innodb  --create-schema='enjoytest1' --debug-info 

輸出結果:

PS C:\Program Files\MySQL\MySQL Server 5.7\bin> ./mysqlslap -uroot -proot  --concurrency=1,50,100,200 --iterations=3 --number-char-cols=5 --number-int-cols=5 --auto-generate-sql --auto-generate-sql-add-autoincrement  --engine=myisam,innodb --create-schema='enjoytest1'
Benchmark
        Running for engine myisam
        Average number of seconds to run all queries: 0.010 seconds
        Minimum number of seconds to run all queries: 0.000 seconds
        Maximum number of seconds to run all queries: 0.016 seconds
        Number of clients running queries: 1
        Average number of queries per client: 0

Benchmark
        Running for engine myisam
        Average number of seconds to run all queries: 0.375 seconds
        Minimum number of seconds to run all queries: 0.031 seconds
        Maximum number of seconds to run all queries: 1.047 seconds
        Number of clients running queries: 50
        Average number of queries per client: 0

Benchmark
        Running for engine myisam
        Average number of seconds to run all queries: 0.041 seconds
        Minimum number of seconds to run all queries: 0.015 seconds
        Maximum number of seconds to run all queries: 0.093 seconds
        Number of clients running queries: 100
        Average number of queries per client: 0

Benchmark
        Running for engine myisam
        Average number of seconds to run all queries: 0.427 seconds
        Minimum number of seconds to run all queries: 0.015 seconds
        Maximum number of seconds to run all queries: 1.125 seconds
        Number of clients running queries: 200
        Average number of queries per client: 0

Benchmark
        Running for engine innodb
        Average number of seconds to run all queries: 0.010 seconds
        Minimum number of seconds to run all queries: 0.000 seconds
        Maximum number of seconds to run all queries: 0.016 seconds
        Number of clients running queries: 1
        Average number of queries per client: 0

Benchmark
        Running for engine innodb
        Average number of seconds to run all queries: 0.494 seconds
        Minimum number of seconds to run all queries: 0.156 seconds
        Maximum number of seconds to run all queries: 1.172 seconds
        Number of clients running queries: 50
        Average number of queries per client: 0

Benchmark
        Running for engine innodb
        Average number of seconds to run all queries: 0.343 seconds
        Minimum number of seconds to run all queries: 0.328 seconds
        Maximum number of seconds to run all queries: 0.359 seconds
        Number of clients running queries: 100
        Average number of queries per client: 0

Benchmark
        Running for engine innodb
        Average number of seconds to run all queries: 1.250 seconds
        Minimum number of seconds to run all queries: 0.593 seconds
        Maximum number of seconds to run all queries: 1.579 seconds
        Number of clients running queries: 200
        Average number of queries per client: 0
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章