반응형
수천만개의 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
반응형
'Programing > Database' 카테고리의 다른 글
[MariaDB] 오늘의 삽질 - root 계정을 날려먹다 (0) | 2021.02.09 |
---|---|
[Mariadb] ubuntu 18.04 마운트된 폴더로 데이터 디렉토리 지정 (0) | 2021.02.09 |
SQL SELECT 텍스트 조건식 반영 (0) | 2020.10.22 |
Oracle DB 계정 추가 및 권한 생성 (0) | 2020.05.13 |
CentOS 8 버전에 MariaDB 10.4 설치 (0) | 2020.04.29 |