mysql生成10w数据_mysql生成千万级的测试数据

为了更好的测试MYSQL性能以及程序优化,不得不去制做海量数据来测试。我这里的方法就是直接用uuid函数进行分配每条数据的不一样内容。sql

1.首先建立测试表(card表)函数

CREATE TABLE `card` (

`card_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',

`card_number` varchar(100) DEFAULT NULL COMMENT '卡号',

PRIMARY KEY (`card_id`)

) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC

2.建立MYSQL存储过程性能

DROP PROCEDURE IF EXISTS proc1;

DELIMITER $$

SET AUTOCOMMIT = 0$$

CREATE PROCEDURE proc1()

BEGIN

DECLARE v_cnt DECIMAL (10) DEFAULT 0 ;

dd:LOOP

INSERT INTO card (card_number) VALUES (UUID());

COMMIT;

SET v_cnt = v_cnt+1 ;

IF v_cnt = 10000000 THEN LEAVE dd;

END IF;

END LOOP dd ;

END;$$

DELIMITER ;

3.调用存储过程,生成对应的测试数据测试

call proc1;

个人机子大概是2分13秒的样子生成完毕,每一个人的机子各有不一样,生成的时间也会不同。优化

4.来测试一下性能吧。ui

select * from card order by rand() limit 1; //6.5秒查询完毕

select * from card where card_number like '%xxx%'; //3.7秒查询完毕

在这样的海量数据状况下,若是用到模糊查询,那确定会很慢,通常建议用全文检索引擎来替代(如Sphinx),查询速度就彻底解决。 spa

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用MySQL的内置函数和语句来生成测试数据。以下是一些常用的方法: 1. 使用INSERT INTO语句:使用INSERT INTO语句将手动添加的数据插入到表中。例如,如果有一个名为"users"的表,可以使用以下语句插入测试数据: ``` INSERT INTO users (name, age) VALUES ('John', 25), ('Jane', 30), ('Bob', 35); ``` 2. 使用SELECT INTO语句:使用SELECT INTO语句从现有的表中选择数据并插入到新表中。例如,可以使用以下语句从现有的"users"表中选择前10数据并插入到新的"test_users"表中: ``` CREATE TABLE test_users SELECT * FROM users LIMIT 10; ``` 3. 使用生成函数:MySQL提供了一些内置的生成函数,可以用于生成随机或递增的数据。例如,可以使用RAND()函数生成随机数,并将其插入到表中: ``` INSERT INTO table_name (column1, column2) VALUES (RAND(), RAND()); ``` 4. 使用循环语句:可以使用循环语句(如WHILE或FOR)在存储过程或函数中生成大量的测试数据。例如,可以使用存储过程生成指定数量的随机用户数据: ``` DELIMITER // CREATE PROCEDURE generate_test_data(IN num_rows INT) BEGIN DECLARE i INT DEFAULT 1; WHILE i <= num_rows DO INSERT INTO users (name, age) VALUES (CONCAT('User', i), FLOOR(RAND() * 100)); SET i = i + 1; END WHILE; END // DELIMITER ; CALL generate_test_data(1000); ``` 这是一些常用的方法来生成测试数据。根据你的具体需求和数据库结构,你可以选择适合的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值