有时候我们需要对大数据进行测试,本地一般没有那么多数据,就需要我们自己生成一些。下面会借助内存表的特点进行生成百万条测试数据。

创建测试数据表

CREATE TABLE ly_message (
  msg_id INT (32),
  content VARCHAR (128),
  TYPE INT,
  creator_id VARCHAR (128),
  create_time TIMESTAMP
);

创建存储过程

DELIMITER $$
USE test$$
DROP PROCEDURE IF EXISTS create_data$$
CEATE DEFINER=test@127.0.0.1 PROCEDURE create_data(IN  loop_times INT)
BEGIN  
    DECLARE var INT DEFAULT 0;    
    WHILE var<loop_times DO    
    SET var=var+1;   
    INSERT INTO ly_message (msg_id,content,TYPE,creator_id,create_time)   
    VALUES (var,CONCAT("cust_",MD5(UUID()),FLOOR(1 + (RAND() * 2))),FLOOR(1 + (RAND() * 2)),MD5(TIME(NOW())+UUID()+RAND()),NOW()) ;  
    END WHILE;   
    END$$ 
DELIMITER ;

实际使用时,需要修改以下几行:

  • 第二行:test改成目标表的数据库;
  • 第四行:test@127.0.0.1改成实际的用户名和mysql的IP地址

调用存储过程

use test;  
delete from ly_message;  
call create_data(10000000);  

实际使用时,需要修改以下几行:

  • 第一行:test,改成目标表的数据库;
  • 第三行:10000000,改成测试数据的条数; 喝杯茶,等待执行完成。