qlap is a MySQL load testing tool like mysqlslap.
qlap - MySQL load testing tool like mysqlslap.
Flags:
--version Displays the program version string.
-h --help Displays help with available flag, subcommand, and positional value parameters.
-d --dsn Data Source Name, see https://github.com/go-sql-driver/mysql#examples.
-n --nagents Number of agents. (default: 1)
-t --time Test run time (sec). Zero is infinity. (default: 60)
--number-queries Number of queries to execute per agent. Zero is infinity. (default: 0)
-r --rate Rate limit for each agent (qps). Zero is unlimited. (default: 0)
-a --auto-generate-sql Automatically generate SQL to execute.
--auto-generate-sql-guid-primary Use GUID as the primary key of the table to be created.
-q --query SQL to execute. (file or string)
--auto-generate-sql-write-number Number of rows to be pre-populated for each agent. (default: 100)
-l --auto-generate-sql-load-type Test load type: 'mixed', 'update', 'write', 'key', or 'read'. (default: mixed)
--auto-generate-sql-secondary-indexes Number of secondary indexes in the table to be created. (default: 0)
--commit-rate Commit every X queries. (default: 0)
--mixed-sel-ins-ratio Mixed load type 'SELECT:INSERT' ratio. (default: 1:1)
-e --engine Engine of the table to be created.
-x --number-char-cols Number of VARCHAR columns in the table to be created. (default: 1)
--char-cols-index Create indexes on VARCHAR columns in the table to be created.
-y --number-int-cols Number of INT columns in the table to be created. (default: 1)
--int-cols-index Create indexes on INT columns in the table to be created.
--pre-query Queries to be pre-executed for each agent.
--create SQL for creating custom tables. (file or string)
--drop-db Forcibly delete the existing DB.
--no-drop Do not drop database after testing.
--hinterval Histogram interval, e.g. '100ms'. (default: 0)
-F --delimiter SQL statements delimiter. (default: ;)
--only-print Just print SQL without connecting to DB.
--no-progress Do not show progress.
$ qlap -d root@/ -n 3 -r 100 -t 10 -a -l mixed -x 3 -y 3
00:10 | 3 agents / run 2727 queries (303 qps)
{
"DSN": "root@/",
"StartedAt": "2021-04-05T20:47:48.122543+09:00",
"FinishedAt": "2021-04-05T20:47:58.140224+09:00",
"ElapsedTime": 10,
"NAgents": 3,
"Rate": 100,
"AutoGenerateSql": true,
"NumberPrePopulatedData": 100,
"NumberQueriesToExecute": 0,
"DropExistingDatabase": false,
"UseExistingDatabase": false,
"NoDropDatabase": false,
"Engine": "",
"LoadType": "mixed",
"GuidPrimary": false,
"NumberSecondaryIndexes": 0,
"CommitRate": 0,
"MixedSelRatio": 1,
"MixedInsRatio": 1,
"NumberIntCols": 3,
"IntColsIndex": false,
"NumberCharCols": 3,
"CharColsIndex": false,
"PreQueries": null,
"Token": "bf9716b4-c9c8-4539-9295-701cc46daa21",
"GOMAXPROCS": 16,
"QueryCount": 2930,
"AvgQPS": 292.4863396144265,
"MaxQPS": 305,
"MinQPS": 202,
"MedianQPS": 303,
"ExpectedQPS": 300,
"Response": {
"Time": {
"Cumulative": "1.70378355s",
"HMean": "499.554µs",
"Avg": "581.496µs",
"P50": "535.414µs",
"P75": "703.491µs",
"P95": "951.235µs",
"P99": "1.224525ms",
"P999": "3.198177ms",
"Long5p": "1.242647ms",
"Short5p": "249.39µs",
"Max": "7.235566ms",
"Min": "145.575µs",
"Range": "7.089991ms",
"StdDev": "274.566µs"
},
"Rate": {
"Second": 1719.7020126177413
},
"Samples": 2930,
"Count": 2930,
"Histogram": [
{
"145µs - 854µs": 2610
},
{
"854µs - 1.563ms": 312
},
{
"1.563ms - 2.272ms": 1
},
{
"2.272ms - 2.981ms": 1
},
{
"2.981ms - 3.69ms": 5
},
{
"3.69ms - 4.399ms": 1
},
{
"4.399ms - 5.108ms": 0
},
{
"5.108ms - 5.817ms": 0
},
{
"5.817ms - 6.526ms": 0
}
]
}
}
qlap -d root@/ \
--create 'create table test (id int); insert into test values (1)' \
-q 'select id from test; select count(id) from test'