老任最近开始准备全面学习下Percona-Tookit工具系列,熟悉会的,学习之前没有了解到的,
所以过程中难免需要一些测试数据,测试数据生成呢,网上相信一搜一大篇,但是老任最近学习
到了一个新的方法分享给大家。顺便总结一下都有哪些快速生成方法。
老任总结了一下三种方式分享给大家。
前两种方式,相信大家基本都知道,但是第三种可能大家很少用到。
这里我主要介绍一下第三种方式。
先简单介绍一下mysqlslap
mysqlslap
usage:
MySQL的性能压测工具,使用简单,MySQL自带无需单独进行安装
就像MySQL命令使用一样方便,类似于mysqldump这些命令一样,系统自带。
#Example
#先创建一个测试表,表结构如下
mysql [localhost:5734] {msandbox} (test) > create table t(id int primary key not null auto_increment,content varchar(128),num int,create_time datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',update_time datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间');
Query OK, 0 rows affected (0.01 sec)
mysql [localhost:5734] {msandbox} (test) > show create table t;
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| t | CREATE TABLE `t` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`content` varchar(128) DEFAULT NULL,
`num` int(11) DEFAULT NULL,
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.02 sec)
#开始调用mysqlslap命令生成测试数据
$ mysqlslap -umsandbox -$Pass -P 5734 -S /tmp/mysql_sandbox5734.sock --number-of-queries=1000000 --create-schema=test --concurrency=10 --query="insert into t(content,num) values(uuid(),rand()*1000);"
mysqlslap: [Warning] Using a password on the command line interface can be insecure.
Benchmark
Average number of seconds to run all queries: 71.634 seconds
Minimum number of seconds to run all queries: 71.634 seconds
Maximum number of seconds to run all queries: 71.634 seconds
Number of clients running queries: 10
Average number of queries per client: 100000
#大概解释一下上述的参数含义
#--number-of-queries=1000000 要生成的测试数据的数量
#--create-schema=test 指定使用哪个数据库
#--concurrency=10 并发的数量
#--query="" 执行的sql内容
#最后出来的结果是执行sql花费的时间
#查看数据库中是否成功
#这里数量是对的 100w条数据
mysql [localhost:5734] {msandbox} (test) > select count(*) from t;
+----------+
| count(*) |
+----------+
| 1000000 |
+----------+
1 row in set (0.21 sec)
#数据内容,非常完美
mysql [localhost:5734] {msandbox} (test) > select * from t limit 10;
+----+--------------------------------------+------+---------------------+---------------------+
| id | content | num | create_time | update_time |
+----+--------------------------------------+------+---------------------+---------------------+
| 1 | af9bbc4e-f9ec-11eb-938d-0050569feb60 | 80 | 2021-08-10 23:07:31 | 2021-08-10 23:07:31 |
| 2 | af9bd5f6-f9ec-11eb-938d-0050569feb60 | 798 | 2021-08-10 23:07:31 | 2021-08-10 23:07:31 |
| 3 | af9c2051-f9ec-11eb-938d-0050569feb60 | 684 | 2021-08-10 23:07:31 | 2021-08-10 23:07:31 |
| 4 | af9c2139-f9ec-11eb-938d-0050569feb60 | 923 | 2021-08-10 23:07:31 | 2021-08-10 23:07:31 |
| 5 | af9c5be9-f9ec-11eb-938d-0050569feb60 | 182 | 2021-08-10 23:07:31 | 2021-08-10 23:07:31 |
| 6 | af9c6923-f9ec-11eb-938d-0050569feb60 | 222 | 2021-08-10 23:07:31 | 2021-08-10 23:07:31 |
| 7 | af9c7202-f9ec-11eb-938d-0050569feb60 | 397 | 2021-08-10 23:07:31 | 2021-08-10 23:07:31 |
| 8 | af9c7219-f9ec-11eb-938d-0050569feb60 | 781 | 2021-08-10 23:07:31 | 2021-08-10 23:07:31 |
| 9 | af9c79e6-f9ec-11eb-938d-0050569feb60 | 908 | 2021-08-10 23:07:31 | 2021-08-10 23:07:31 |
| 10 | af9c82a8-f9ec-11eb-938d-0050569feb60 | 321 | 2021-08-10 23:07:31 | 2021-08-10 23:07:31 |
+----+--------------------------------------+------+---------------------+---------------------+
10 rows in set (0.00 sec)
以上就是过程,我相信明眼人肯定懂得这样生成数据的好处,
对于DBA来说,想生成一些测试数据,一个建表语句,一个mysqlslap命令,
这样操作,岂不是很快,哈哈哈哈,是不是感觉又长姿势了,关注老任,
带你解锁更多新姿势!!!!