天天看點

MySQL基準測試工具-mysqlslap

 mysqlslap是MySQL5.1之後自帶的benchmark基準測試工具,該工具可以模拟多個用戶端同時并發的向伺服器發出查詢更新,給出了性能測試資料而且提供了多種引擎的性能比較。

      使用方式:

      --concurrency  并發數量 (可逗号隔開),例如:concurrency=10,50,100 并發連接配接線程數是10,50,100

      --engines 要測試的存儲引擎,逗号隔開

      --iterations   運作多少次後,得到結果;

      --auto-generate-sql  自動生成SQL腳本來測試;

      --auto-generate-sql-load-type  測試類型是read還是write,還是mixed;(可以使用--only-print 檢視到底是哪些SQL語句)

      --number-of-queries 執行查詢的次數,

      --debug-info  輸出CPU、記憶體等系統相關資訊

      --number-int-cols  測試表int字段類型的數量;

      --auto-generate-sql-add-autoincrement  對生成的測試表 自動生成含有auto_increment屬性的列;

      --number-char-cols  測試表的char類型字段的數量;

      --create-schema = db  建立測試的資料庫;

      --query 使用自定義腳本進行測試, 可以是一個存儲過程或者SQL語句來執行;

      --only-print  隻列印測試過程中涉及到的SQL語句,不真正的執行;

  舉例:

  測試200個并發寫入性能,測試20次,自動生成SQL腳本,測試表包含35個int字段,20個char字段,測試引擎分别為innodb,myisam;每次執行3000個query;

1

<code>.</code><code>/bin/mysqlslap</code> <code>--socket=</code><code>/usr/local/mysql/mysql</code><code>.sock --port=3306 --concurrency=200  --iterations=20 --auto-generate-sql --auto-generate-sql-load-</code><code>type</code><code>=write  --auto-generate-sql-add-autoincrement --number-int-cols=35 --number-char-cols=20  --engine=innodb,myisam   --create-schema=sysbench  --number-of-queries=3000 --debug-info</code>

        結果為:

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

<code>Benchmark</code>

<code>        </code><code>Running </code><code>for</code> <code>engine innodb</code>

<code>        </code><code>Average number of seconds to run all queries: 6.385 seconds</code>

<code>        </code><code>Minimum number of seconds to run all queries: 3.021 seconds</code>

<code>        </code><code>Maximum number of seconds to run all queries: 12.969 seconds</code>

<code>        </code><code>Number of clients running queries: 200</code>

<code>        </code><code>Average number of queries per client: 15</code>

<code>        </code><code>Running </code><code>for</code> <code>engine myisam</code>

<code>        </code><code>Average number of seconds to run all queries: 0.621 seconds</code>

<code>        </code><code>Minimum number of seconds to run all queries: 0.442 seconds</code>

<code>        </code><code>Maximum number of seconds to run all queries: 1.134 seconds</code>

<code>User </code><code>time</code> <code>0.66, System </code><code>time</code> <code>1.97</code>

<code>Maximum resident </code><code>set</code> <code>size 10060, Integral resident </code><code>set</code> <code>size 0</code>

<code>Non-physical pagefaults 50486, Physical pagefaults 5, Swaps 0</code>

<code>Blocks </code><code>in</code> <code>584 out 96, Messages </code><code>in</code> <code>0 out 0, Signals 0</code>

<code>Voluntary context switches 298373, Involuntary context switches 1469</code>

自定義SQL測試腳本:

<code>mysqlslap --create=</code><code>/yourpath/test</code><code>.sql --query=</code><code>/yourpath/test1</code><code>.sql --concurrency=50,100,200 --iterations=20 --engine=myisam,innodb</code>

<code></code>

本文轉自 位鵬飛 51CTO部落格,原文連結:http://blog.51cto.com/weipengfei/1249295,如需轉載請自行聯系原作者