DB/MySQL

MySQL 더미 데이터 생성하기

cjsrhd94 2022. 7. 11. 21:21

MySQL에서 더미 데이터를 생성하는 법을 알아보겠습니다.

 

쿼리 성능을 측정하기 위해 더미 데이터를 10만개 정도를 Insert 할 일이 있었습니다. 가장 먼저 사용한 방법은 서버 내부에서 for문을 사용해 Insert 해주는 방법이었습니다. 그러나 이 방법은 1만개 정도의 데이터를 Insert 하는데 분 단위 이상의 시간이 소요되어 다른 방법을 찾아야 했습니다. 다음으로 사용한 방법은 오늘 알아볼 MySQL에 직접 Insert 쿼리를 작성해주는 방법이었습니다. 아래는 더미 데이터를 10만개 생성하는 프로시저 쿼리문입니다.

// MySQL Query문

DELIMITER $$
DROP PROCEDURE IF EXISTS loopInsert$$
 
CREATE PROCEDURE loopInsert()
BEGIN
    DECLARE i INT DEFAULT 1;
        
    WHILE i <= 100000 DO
        INSERT INTO user_table(email , nickname, password, ROLE, STATUS, 
                               created_date, last_modified_date, created_by, last_modified_by)
          VALUES(CONCAT('cjsrhd', i, '@gmail.com'), CONCAT('cjsrhd',i), concat('1234', i),'ADMIN', 'ACTIVE', 
                 now(), now(), CONCAT('cjsrhd', i, '@gmail.com'), CONCAT('cjsrhd', i, '@gmail.com'));
        SET i = i + 1;
    END WHILE;
END$$
DELIMITER $$


CALL loopInsert;
  • 'DELIMETER $$'는 단위 작업의 맨 처음과 끝에 사용하여, 하나의 명령문으로 처리하기 위해 사용합니다. MySQL은 세미콜론을 기준으로 명령문을 나누어 실행하기 때문에 프로시저와 같이 일련의 명령문을 처리할 때 'DELIMETER $$'를 사용합니다.

위 쿼리문을 실행하는데 2분 14초정도 시간이 소요되어 for문을 사용했을 때에 비해 시간이 확연히 단축된 것을 확인할 수 있습니다.