Mysql官方性能測(cè)試工具mysqlslap的使用簡介
MySQL 作為最流行的開源數(shù)據(jù)庫,在各個(gè)領(lǐng)域都有相當(dāng)廣泛的應(yīng)用,作為一個(gè) MySQL DBA,經(jīng)常會(huì)對(duì)數(shù)據(jù)庫進(jìn)行一些性能測(cè)試來主動(dòng)(或者是被動(dòng)的)對(duì)業(yè)務(wù)壓力做一個(gè)評(píng)估,來判斷數(shù)據(jù)庫當(dāng)前的負(fù)載以及最高的性能容量。
常見的性能測(cè)試工具有 sysbench 和 tpcc,這兩者都是非常優(yōu)秀的壓測(cè)工具,但是都需要特殊的編譯或者安裝,并且需要一定的開發(fā)能力才能修改具體測(cè)試的語句。
mysqlslap 則是隨著 MySQL 安裝的時(shí)候就自動(dòng)安裝好了,而且 mysqlslap 把很多的自定義測(cè)試的功能封裝到了外部,使用者只需要在外部提供 SQL 語句的腳本就可以自定義測(cè)試語句,使用起來會(huì)簡便一些。
使用介紹mysqlslap 提供了非常多的參數(shù)來配置測(cè)試的項(xiàng)目的類型,這里僅摘選部分常用參數(shù)進(jìn)行說明,詳細(xì)信息參考 mysqlslap 自身的幫助信息。
參數(shù)名
說明
login-path=#
新版本 MySQL 提供的登錄方式
-a, --auto-generate-sql
自動(dòng)生成 SQL 語句
--auto-generate-sql-add-autoincrement
在自動(dòng)生成的表中添加自增列
--auto-generate-sql-execute-number=#
測(cè)試中,執(zhí)行 SQL 的總次數(shù)
--auto-generate-sql-guid-primary
生成基于 GUID 的主鍵
--auto-generate-sql-load-type=name
測(cè)試的負(fù)載模型,包括 mixed, update, write, key,read,默認(rèn)是 mix
--auto-generate-sql-secondary-indexes=#
自動(dòng)生成的表中,二級(jí)索引的數(shù)量
--auto-generate-sql-unique-query-number=#
測(cè)試中,使用唯一索引的查詢語句數(shù)量
--auto-generate-sql-unique-write-number=#
測(cè)試中,使用唯一索引的 DML 語句數(shù)量
--auto-generate-sql-write-number=#
測(cè)試中,每個(gè)線程執(zhí)行的 insert 語句數(shù)量,默認(rèn)為 100
--commit=#
測(cè)試中,每多少個(gè)語句執(zhí)行一次 commit
-c, --concurrency=name
測(cè)試中,并發(fā)的線程數(shù)/客戶端數(shù)
--create=name
自定義建表語句,或者是 SQL 文件的地址
--create-schema=name
測(cè)試中,使用的數(shù)據(jù)庫名
--detach=#
測(cè)試中,每執(zhí)行一定數(shù)量的語句后進(jìn)行重連
-e, --engine=name
指定建表時(shí)的存儲(chǔ)引擎
-h, --host=name
指定測(cè)試實(shí)例的 host 地址
-u, --user=name
指定測(cè)試實(shí)例的用戶名
-p, --password=name
指定測(cè)試實(shí)例的密碼
-P, --port=#
指定測(cè)試實(shí)例的端口
-i, --iterations=#
指定測(cè)試重復(fù)的次數(shù)
--no-drop
指定測(cè)試完成后不刪除測(cè)試用的庫表
-x, --number-char-cols=name
指定測(cè)試表中 varchar 列的數(shù)量
-y, --number-int-cols=name
指定測(cè)試表中 int 列的數(shù)量
--number-of-queries=#
指定每個(gè)線程執(zhí)行的 SQL 語句數(shù)量上限(不精確)
--only-print
類似于 dry run,輸出會(huì)進(jìn)行的操作,但是不會(huì)真的執(zhí)行
-F, --delimiter=name
使用文件中提供的 SQL 語句時(shí),顯式指定語句之間的分隔符
--post-query=name
指定測(cè)試完成后,執(zhí)行的查詢語句,或者是 SQL 語句的文件
--pre-query=name
指定測(cè)試開始前,執(zhí)行的查詢語句,或者是 SQL 語句的文件
-q, --query=name
指定測(cè)試時(shí),執(zhí)行的查詢語句,或者是 SQL 語句的文件
實(shí)際體驗(yàn)這里對(duì) mysqlslap 進(jìn)行一次簡單的試用,目標(biāo)實(shí)例使用騰訊云數(shù)據(jù)庫 MySQL,最簡單的測(cè)試示例如下:
root@VM-64-10-debian:~# mysqlslap --concurrency=100 --iterations 10 -a --auto-generate-sql-add-autoincrement --engine=innodb --number-of-queries=1000 -h172.1.100.10 -uroot -pEnter password:BenchmarkRunning for engine innodbAverage number of seconds to run all queries: 0.046 secondsMinimum number of seconds to run all queries: 0.042 secondsMaximum number of seconds to run all queries: 0.049 secondsNumber of clients running queries: 100Average number of queries per client: 10root@VM-64-10-debian:~#
該示例中使用的就是最簡單的測(cè)試模型,由 mysqlslap 自己生成所有的測(cè)試語句與建表語句。
如果要對(duì)不同并發(fā)下的性能做對(duì)比,則可以用這種方式進(jìn)行測(cè)試:
root@VM-64-10-debian:~# mysqlslap --concurrency=100,200 --iterations 10 -a --auto-generate-sql-add-autoincrement --engine=innodb --number-of-queries=1000 -h172.16.0.40 -uroot -pEnter password:BenchmarkRunning for engine innodbAverage number of seconds to run all queries: 0.046 secondsMinimum number of seconds to run all queries: 0.045 secondsMaximum number of seconds to run all queries: 0.048 secondsNumber of clients running queries: 100Average number of queries per client: 10BenchmarkRunning for engine innodbAverage number of seconds to run all queries: 0.037 secondsMinimum number of seconds to run all queries: 0.034 secondsMaximum number of seconds to run all queries: 0.052 secondsNumber of clients running queries: 200Average number of queries per client: 5root@VM-64-10-debian:~#
輸出的結(jié)果為時(shí)間,因此時(shí)間越小說明整體性能越好。
如果要自定義測(cè)試語句,則可以把 SQL 語句寫在文件里面,例如:
root@VM-64-10-debian:~# cat create.sqlCREATE TABLE a (b int);INSERT INTO a VALUES (23);root@VM-64-10-debian:~# cat query.sqlSELECT * FROM a;SELECT b FROM a;root@VM-64-10-debian:~#root@VM-64-10-debian:~# mysqlslap --concurrency=100,200 --query=query.sql --create=create.sql --delimiter=';' --engine=innodb --number-of-queries=1000 -h172.16.0.40 -uroot -pEnter password:BenchmarkRunning for engine innodbAverage number of seconds to run all queries: 0.045 secondsMinimum number of seconds to run all queries: 0.045 secondsMaximum number of seconds to run all queries: 0.045 secondsNumber of clients running queries: 100Average number of queries per client: 10BenchmarkRunning for engine innodbAverage number of seconds to run all queries: 0.023 secondsMinimum number of seconds to run all queries: 0.023 secondsMaximum number of seconds to run all queries: 0.023 secondsNumber of clients running queries: 200Average number of queries per client: 5root@VM-64-10-debian:~#小結(jié)
市面上可用的 MySQL 壓測(cè)工具非常多,各個(gè)工具都有優(yōu)劣,多了解一些工具,然后根據(jù)實(shí)際需求選擇最合適的工具就能以最效率的方式完成需要的壓力測(cè)試。
以上就是Mysql官方性能測(cè)試工具mysqlslap的使用簡介的詳細(xì)內(nèi)容,更多關(guān)于mysqlslap的使用的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!
相關(guān)文章:
1. 關(guān)于MySQL的ORDER BY排序詳解2. MySQL全文搜索之布爾搜索3. 如何實(shí)現(xiàn)MySQL數(shù)據(jù)庫的備份與恢復(fù)4. MySQL Community Server 5.1.495. MYSQL技巧:為現(xiàn)有字段添加自增屬性6. 為SQLite3提供一個(gè)ANSI到UTF8的互轉(zhuǎn)函數(shù)7. 用最簡單的方法復(fù)制或遷移Oracle數(shù)據(jù)庫8. MYSQL(電話號(hào)碼,身份證)數(shù)據(jù)脫敏的實(shí)現(xiàn)9. SQL Server自動(dòng)備份無法刪除過期的備份文件10. oracle觸發(fā)器介紹
