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문을 사용했을 때에 비해 시간이 확연히 단축된 것을 확인할 수 있습니다.