程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL壓力測試辦法 若何應用mysqlslap測試MySQL的壓力?

MySQL壓力測試辦法 若何應用mysqlslap測試MySQL的壓力?

編輯:MySQL綜合教程

MySQL壓力測試辦法 若何應用mysqlslap測試MySQL的壓力?。本站提示廣大學習愛好者:(MySQL壓力測試辦法 若何應用mysqlslap測試MySQL的壓力?)文章只能為提供參考,不一定能成為您想要的結果。以下是MySQL壓力測試辦法 若何應用mysqlslap測試MySQL的壓力?正文


其實mysql測試也沒有這麼龐雜,除一些經常使用的select\insert\update\deletc這些外,其實測試他的並發量才是最主要的。好比在銜接數1K的時刻,並發量可否知足以後要求\辦事器機能、內存CPU應用情形。說白了,測試mysql就是測試他的設置裝備擺設文件和並發量及辦事器機能。

1、對象
首選對象mysql自帶的:mysqlslap

–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
只打印測試語句而不現實履行

———————————————————————————————-
測試的進程須要生成測試表,拔出測試數據,這個mysqlslap可以主動生成,默許生成一個mysqlslap的schema,假如曾經存在則先刪除,這裡要留意了,不要用–create-schema指定曾經存在的庫,不然效果能夠很嚴重。可以用–only-print來打印現實的測試進程:

# mysqlslap -a –only-print

DROP SCHEMA IF EXISTS `mysqlslap`;
 CREATE SCHEMA `mysqlslap`;
 use mysqlslap;
 CREATE TABLE `t1` (intcol1 INT(32) ,charcol1 VARCHAR(128));
 INSERT INTO t1 VALUES (1804289383,'mxvtvmC9127qJNm06sGB8R92q2j7vTiiITRD9rdxBL');
 …
 SELECT intcol1,charcol1 FROM t1;
 INSERT INTO t1 VALUES (364531492,'qMa5SuKo4M5OM7ldvisSc6WK9rsNTGFxkDJ4EAwW');
 DROP SCHEMA IF EXISTS `mysqlslap`;

可以看到最初由刪除一開端創立的schema的舉措,全部測試完成後不會在數據庫中留下陳跡。假設我們履行一次測試,分離50和100個並發,履行1000次總查詢,那末:

# mysqlslap -uroot -p123456 -a –concurrency=50,100 –number-of-queries 1000 –debug-info

Benchmark
Average number of seconds to run all queries: 0.375 seconds
Minimum number of seconds to run all queries: 0.375 seconds
Maximum number of seconds to run all queries: 0.375 seconds
Number of clients running queries: 50
Average number of queries per client: 20

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

User time 0.29, System time 0.11
Maximum resident set size 0, Integral resident set size 0
Non-physical pagefaults 4032, Physical pagefaults 0, Swaps 0
Blocks in 0 out 0, Messages in 0 out 0, Signals 0
Voluntary context switches 7319, Involuntary context switches 681

以上成果可以看出,50和100個並發分離獲得一次測試成果(Benchmark),並發數越多,履行完一切查詢的時光越長。為了精確起見,可以多迭代測試幾回:

# mysqlslap -a –concurrency=50,100 –number-of-queries 1000 –iterations=5 –debug-info

Benchmark
Average number of seconds to run all queries: 0.380 seconds
Minimum number of seconds to run all queries: 0.377 seconds
Maximum number of seconds to run all queries: 0.385 seconds
Number of clients running queries: 50
Average number of queries per client: 20

Benchmark
Average number of seconds to run all queries: 0.447 seconds
Minimum number of seconds to run all queries: 0.444 seconds
Maximum number of seconds to run all queries: 0.451 seconds
Number of clients running queries: 100
Average number of queries per client: 10

User time 1.44, System time 0.67
Maximum resident set size 0, Integral resident set size 0
Non-physical pagefaults 17922, Physical pagefaults 0, Swaps 0
Blocks in 0 out 0, Messages in 0 out 0, Signals 0
Voluntary context switches 36796, Involuntary context switches 4093

測試同時分歧的存儲引擎的機能停止比較:
# mysqlslap -uroot -p123456 -a -concurrency=50,100 –number-of-queries 1000 –iterations=5 –engine=myisam,innodb –debug-info
Benchmark
Running for engine myisam
Average number of seconds to run all queries: 0.200 seconds
Minimum number of seconds to run all queries: 0.188 seconds
Maximum number of seconds to run all queries: 0.210 seconds
Number of clients running queries: 50
Average number of queries per client: 20

Benchmark
Running for engine myisam
Average number of seconds to run all queries: 0.238 seconds
Minimum number of seconds to run all queries: 0.228 seconds
Maximum number of seconds to run all queries: 0.251 seconds
Number of clients running queries: 100
Average number of queries per client: 10

Benchmark
Running for engine innodb
Average number of seconds to run all queries: 0.375 seconds
Minimum number of seconds to run all queries: 0.370 seconds
Maximum number of seconds to run all queries: 0.379 seconds
Number of clients running queries: 50
Average number of queries per client: 20

Benchmark
Running for engine innodb
Average number of seconds to run all queries: 0.443 seconds
Minimum number of seconds to run all queries: 0.440 seconds
Maximum number of seconds to run all queries: 0.447 seconds
Number of clients running queries: 100
Average number of queries per client: 10

User time 2.83, System time 1.66
Maximum resident set size 0, Integral resident set size 0
Non-physical pagefaults 34692, Physical pagefaults 0, Swaps 0
Blocks in 0 out 0, Messages in 0 out 0, Signals 0
Voluntary context switches 87306, Involuntary context switches 10326

# mysqladmin -uroot -p123456 -i 10 extended status 每10秒刷新一次

Aborted_connects 測驗考試曾經掉敗的MySQL辦事器的銜接的次數。
Connections 試圖銜接MySQL辦事器的次數。
Created_tmp_tables 當履行語句時,曾經被發明了的隱含暫時表的數目。
Delayed_insert_threads 正在應用的延遲拔出處置器線程的數目。
Delayed_writes 用INSERT DELAYED寫入的行數。
Delayed_errors 用INSERT DELAYED寫入的產生某些毛病(能夠反復鍵值)的行數。
Flush_commands 履行FLUSH敕令的次數。
Handler_delete 要求從一張表中刪除行的次數。
Handler_read_first 要求讀入表中第一行的次數。
Handler_read_key 要求數字基於鍵讀行。
Handler_read_next 要求讀入基於一個鍵的一行的次數。
Handler_read_rnd 要求讀入基於一個固定地位的一行的次數。
Handler_update 要求更新表中一行的次數。
Handler_write 要求向表中拔出一行的次數。
Key_blocks_used 用於症結字緩存的塊的數目。
Key_read_requests 要求從緩存讀入一個鍵值的次數。
Key_reads 從磁盤物理讀入一個鍵值的次數。
Key_write_requests 要求將一個症結字塊寫入緩存次數。
Key_writes 將一個鍵值塊物理寫入磁盤的次數。
Max_used_connections 同時應用的銜接的最年夜數量。
Not_flushed_key_blocks 在鍵緩存中曾經轉變然則還沒被清空到磁盤上的鍵塊。
Not_flushed_delayed_rows 在INSERT DELAY隊列中期待寫入的行的數目。
Open_tables 翻開表的數目。
Open_files 翻開文件的數目。
Open_streams 翻開流的數目(重要用於日記記錄)
Opened_tables 曾經翻開的表的數目。
Questions 發往辦事器的查詢的數目。
Slow_queries 要花跨越long_query_time時光的查詢數目。
Threads_connected 以後翻開的銜接的數目。
Threads_running 不在睡眠的線程數目。
Uptime 辦事器任務了若干秒。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved