Programing/Database

[MariaDB] Dummy Data 대량으로 만들기

개발자 2020. 11. 4. 03:05
반응형

수천만개의 DB를 어떻게 지지고 볶아야 union을 빠르게 할 수 있을까....하는 생각에

혼자 사용하는 테스트용 DB서버에 밀어넣으려 한다 (현재 AM 2:58)

 

 

 

1. 테이블 2개 생성

2. 저장 루틴 생성

 

3. 루틴 본문에 입력 후 저장

 

4. 생성된 프로시저 실행

* 주의사항 3000만개는 오래걸려서 heidiSQL이 멈춤.

궁금해서 show processlist; 쿼리를 쳐봤더니 등록을 열심히 하고 있다. (DB만 안죽으면 될 듯)

 

복사할 텍스트는 아래에..

-- 테이블 생성부분
CREATE TABLE `test_a` (
	`firstName` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
	`lastName` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
	UNIQUE INDEX `firstName_lastName` (`firstName`, `lastName`) USING BTREE
)
COLLATE='utf8mb4_general_ci'
ENGINE=InnoDB
;

CREATE TABLE `test_b` (
	`firstName` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
	`lastName` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
	`email` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
	UNIQUE INDEX `firstName_lastName` (`firstName`, `lastName`) USING BTREE
)
COLLATE='utf8mb4_general_ci'
ENGINE=InnoDB
;


--루틴본문
BEGIN

DECLARE i INT DEFAULT 0;
	DELETE FROM test_a;
	DELETE FROM test_b;

	WHILE (i <= 30000000) DO 
	
		INSERT INTO test_a (firstName, lastName)
		VALUES (CONCAT('firstName_',i), CONCAT('lastName_',i));
		
		INSERT INTO test_b (firstName, lastName, email)
		VALUES (CONCAT('firstName_',i), CONCAT('lastName_',i), CONCAT('mail_', i, '@domain.com'));
		
		SET i = i + 1;
	
	END WHILE;

END
반응형