mysql內的測試指令碼工具 mysql測試指令碼

2021-10-17 13:44:07 字數 3234 閱讀 4368

mysql從5.1.4版開始帶有乙個壓力測試工具mysqlslap,通過模擬多個併發客戶端訪問mysql來執行測試,使用起來非常的簡單。通過mysqlslap –help可以獲得可用的選項,這裡列一些主要的引數,更詳細的說明參考官方手冊。

複製** **如下:

–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

只列印測試語句而不實際執行

它的使用語法如下:

shell>/usr/local/mysql/bin/mysqlslap [options]

常用引數【options】詳細介紹:

--concurrency代表併發數量,多個可以用逗號隔開。例如:--concurrency=50,200,500

--engines代表要測試的引擎,可以有多個,用分隔符隔開。例如:--engines=myisam,innodb,memory

--iterations代表要在不同併發環境下,各自執行測試多少次。

--auto-generate-sql 代表用mysqlslap工具自己生成的sql指令碼來測試併發壓力。

--auto-generate-sql-add-auto-increment 代表對生成的表自動新增auto_increment列,從5.1.18版本開始,

--auto-generate-sql-load-type 代表要測試的環境是讀操作還是寫操作還是兩者混合的(read,write,update,mixed)

--number-of-queries 代表總共要執行多少條查詢。

--debug-info 代表要額外輸出cpu以及記憶體的相關資訊。

--number-int-cols 代表示例表中的integer型別的屬性有幾個。

--number-char-cols代表示例表中的vachar型別的屬性有幾個。

--create-schema 代表自定義的測試庫名稱。

--query 代表自定義的測試sql指令碼。

說明:測試的過程需要生成測試表,插入測試資料,這個mysqlslap可以自動生成,預設生成乙個mysqlslap的schema,如果已經存在則先刪除。可以用-only-print來列印實際的測試過程,整個測試完成後不會在資料庫中留下痕跡。

實驗步驟:

練習一:

單執行緒測試。測試做了什麼。

>./bin/mysqlslap -a -uroot -p111111

多執行緒測試。使用--concurrency來模擬併發連線。

> ./bin/mysqlslap -a -c 100 -uroot -p111111

迭代測試。用於需要多次執行測試得到平均值。

> ./bin/mysqlslap -a -i 10 -uroot -p111111

練習二:

> ./bin/mysqlslap -auto-generate-sql-add-autoincrement -a -uroot -p111111

> ./bin/mysqlslap -a -auto-generate-sql-load-type=read -uroot -p111111

> ./bin/mysqlslap -a -auto-generate-secondary-indexes=3 -uroot -p111111

> ./bin/mysqlslap -a -auto-generate-sql-write-number=1000 -uroot -p111111

> ./bin/mysqlslap --create-schema world -q "select count(*) from city" -uroot -p111111

> ./bin/mysqlslap -a -e innodb -uroot -p111111

> ./bin/mysqlslap -a --number-of-queries=10 -uroot -p111111

練習三:

執行一次測試,分別50和100個併發,執行1000次總查詢:

> ./bin/mysqlslap -a --concurrency=50,100 --number-of-queries 1000 --debug-info -uroot -p111111

50和100個併發分別得到一次測試結果(benchmark),併發數越多,執行完所有查詢的時間越長。為了準確起見,可以多迭代測試幾次:

> ./bin/mysqlslap -a --concurrency=50,100 --number-of-queries 1000 --iterations=5 --debug-info -uroot -p111111

測試同時不同的儲存引擎的效能進行對比:

>./bin/mysqlslap -a --concurrency=50,100 --number-of-queries 1000 --iterations=5 --engine=myisam,innodb --debug-info -uroot -p111111

詳細出處參考:

mysql進行測試的指令碼 mysql測試指令碼

mysql從5.1.4版開始帶有乙個壓力測試工具mysqlslap,通過模擬多個併發客戶端訪問mysql來執行測試,使用起來非常的簡單。通過mysqlslap help可以獲得可用的選項,這裡列一些主要的引數,更詳細的說明參考官方手冊。複製 如下 auto generate sql,a 自動生成測試...

mysql 基準測試指令碼 MySQL基準測試

常見指標 tps transaction per second qps query per second 響應時間 併發量步驟 計畫和設計基準測試 準備基準測試及資料收集指令碼 容易忽略的問題 使用生產環境資料時只使用了部分資料 在多使用者場景中,只做單使用者的測試 在單伺服器上測試分布式應用 反覆...

介面測試 測試工具apipost指令碼大全

apt.globals.set key value 設定乙個全域性變數 apt.globals.get key 獲取乙個全域性變數 apt.globals.delete key 刪除乙個全域性變數 apt.globals.clear 清除全域性變數 apt.variables.set key val...