文章会有【原创】或者【转载】标示,部分来自Google Baidu的学习结果 {Java/PHP/Python/Ruby/Go}

mysqlslap学习【学习】  


mysqlslap 可以用于模拟服务器的负载,并输出计时信息。
1:以自动生成测试表和数据的形式,分别模拟 50 和 100 个客户端并发连接处理 1000 个 query 的情况。
~/.jumbo/bin/mysqlslap -a --concurrency=50,100 --number-of-queries=1000 -uroot -p

可以输出内存和CPU信息。
mysqlslap -a --concurrency=50,100 --number-of-queries=1000 --debug-info

增加 --iterations 选项,可以 重复执行 5 次
mysqlslap -a --concurrency=50,100 --number-of-queries=1000 --iterations=5 --debug-info

针对远程主机上的 mysql 进行测试。
mysqlslap -a --concurrency=50,100 --number-of-queries=1000 -h 127.0.0.2 -P 3306 -p

使用 --only-print 选项,可以查看 mysqlslap 在测试过程中如何执行的 sql 语句。在这种方式下,仅会对数据库进行模拟操作。如下显示的自动产生测试表和数据的情况下,mysqlslap 的执行过程: 创建一个临时的库 mysqlslap ,并在测试结束是会将其删除。
mysqlslap -a --only-print

使用 --defaults-file 选项,指定从配置文件中读取选项配置。
使用 --number-int-cols 选项,指定表中会包含 4 个 int 型的列。
使用 --number-char-cols 选项,指定表中会包含 35 个 char 型的列。
使用 --engine 选项,指定针对何种存储引擎进行测试。
mysqlslap --defaults-file=/etc/my.cnf --concurrency=50,100,200 --iterations=1 --number-int-cols=4 --number-char-cols=35 --auto-generate-sql --auto-generate-sql-add-autoincrement --auto-generate-sql-load-type=mixed --engine=myisam,innodb --number-of-queries=200 --debug-info -S /tmp/mysql.sock

mysqlslap 运行分三个阶段:
创建 schema,table 和任何用来测试的已经存储了的程序和数据。这个阶段使用单客户端连接;
进行负载测试。这个阶段使用多客户端连接;
清除(断开连接,删除指定表)。这个阶段使用单客户端连接。
a. 提供你自己的创建 SQL 语句和查询 SQL 语句,有 50 个客户端查询,每个查询 200 次(在单行上输入命令):
mysqlslap --delimiter=";" --create="CREATE TABLE a (b int);INSERT INTO a VALUES (23)" --query="SELECT * FROM a" --concurrency=50 --iterations=200

b. 让 mysqlslap 创建查询的 SQL 语句,使用的表有 2 个 INT 行和 3 个 VARCHAR 行。使用 5 个客户端,每一个查询 20 次!不要创建表或插入数据。(换言之,用之前测试的模式和数据):
mysqlslap --concurrency=5 --iterations=20 --number-int-cols=2 --number-char-cols=3 --auto-generate-sql

c. 告诉程序从指定的 create.sql 文件去加载 create,insert 和查询等 SQL 语句。该文件有多个表的 create 和insert 语句, 它们都是通过“;”分隔开的。query.sql 文件则有 多个查询语句, 分隔符也是“;”。执行所有的加载语句,然后通过查询文件执行所有的查询语句,分别在 5 个客户端上每个执行 5 次:
mysqlslap --concurrency=5 --iterations=5 --query=query.sql --create=create.sql --delimiter=";"