likes
comments
collection
share

MySQL 数据蠕虫生成百万测试数据

作者站长头像
站长
· 阅读数 82

前言

有时,为了对某个sql语句或者功能进行效率测试时,我们需要海量的测试数据,来完成这个功能,可以使用数据蠕虫的方法来模拟出海量数据

将查询出来的数据不断的新增插入到指定的数据表中。通常情况,mysql蠕虫复制时用来测试表压力。

介绍

数据蠕虫,学名(蠕虫复制):

顾名思义自己复制自己,并且数量成倍也就是以指数的形式增加。mysql蠕虫复制的重点就在于复制。

蠕虫复制的意义

  1. 从已有的数据表中拷贝数据到新的数据表;

  2. 可以迅速的让表中的数据膨胀到一定的数量级,多用于测试表的压力及效率。

语法

 insert into + 数据表名 +字段列表/* + from 数据表名;
 
 //例
insert into users select null,username,password,nickname,avatar,created_at,updated_at,deleted_at from users;

测试

以下是测试表结构:

CREATE TABLE `users` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(120) COLLATE utf8mb4_unicode_ci NOT NULL,
  `password` varchar(80) COLLATE utf8mb4_unicode_ci NOT NULL,
  `nickname` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
  `avatar` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  `deleted_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

先查询下已有表中的信息字段

MySQL 数据蠕虫生成百万测试数据

执行蠕虫语句

MySQL 数据蠕虫生成百万测试数据

再次执行

MySQL 数据蠕虫生成百万测试数据

查看数据条数

MySQL 数据蠕虫生成百万测试数据

数据以2,4,8,16,32...的规律来增长的,也就是我们熟悉的以指数形式增加的。那么一直操作下去,就能在短时间内使得表中数据膨胀到一定数量级,从而达到测试出表压力的目的。

模拟真实数据

数据量是满足了,但是数据真实性还有待提高。实际不会所有人的姓名、密码、昵称、头像都是一样的,因此需要对姓名、密码、昵称、头像字段进行修改。

修改姓名|昵称:

这里我们可以把姓名和昵称设置为 test_id|test_name 的格式,保证数据唯一性。test_id 的格式可以利用MySQL里的函 CONCAT 进行字符串拼接:

修改密码:

密码利用随机数和md5内置加密函数实现

修改更新时间:

使用MySQL内置时间函数实现

update users set username = concat('test',id),nickname = concat('testName',id),password=md5(rand()*100),updated_at=now();

最终的数据如下,还算是比较真实的数据。

MySQL 数据蠕虫生成百万测试数据

构造百万级数据就可以使用了。

转载自:https://juejin.cn/post/7046558889646489607
评论
请登录