[SQL] 쿼리 튜닝을 위한 준비 : 더미 데이터 적재

Hocaron·2022년 2월 23일
0

DB

목록 보기
3/13
post-custom-banner

DB에서 왜 인덱스가 필요한지. 다양한 성능을 테스트 해보기 위해 준비를 해보자.
[DOCKER] docker 컨테이너 자원 할당 제한
🟩 더미 데이터 적재

MySQL 프로시저를 이용한 더미데이터 생성

# 더미 데이터 생성
DELIMITER $$
DROP PROCEDURE IF EXISTS loopInsert$$

CREATE PROCEDURE loopInsert()
BEGIN
    DECLARE i INT DEFAULT 1;
    WHILE i <= 2000 DO
        INSERT INTO board(id , user, nickname)
          VALUES(concat(i), concat('user',i), 'nickname', i);
        SET i = i + 1;
    END WHILE;
END$$
DELIMITER $$

위의 SQL문을 통해 프로시저를 생성해주고 아래 CALL loopInsert() SQL문을 통해 프로시저를 실행시켜주면된다.

CALL loopInsert();

BULK INSERT를 이용한 더미데이터 생성

  • MySQL에서 대량으로 INERT를 수행하게 해주는 SQL문

일반 INSERT

insert into test(a, b, c) values (1, 2, 3);
insert into test(a, b, c) values (4, 5, 6);
insert into test(a, b, c) values (7, 8, 9);

BULK INSERT

insert into test(a, b, c) values (1, 2, 3), (4, 5, 6), (7, 8, 9);

📢 BULK INSERT로 테스트한 글인데, 재밌다.

이제 본격적으로 적재해볼까

훌륭하신 분이 만들어 놓은 데이터를 활용해보자.

  1. 레포에서 클론 받기
$ git clone https://github.com/datacharmer/test_db.git
  1. 해당 폴더로 이동( 다운로드 받은 폴더로 이동해야한다)
$ cd test_db
  1. sql문 실행
$ mysql -u root -p < employees.sql

만들어진 데이터는 과연...?

$ mysql  -t < test_employees_md5.sql
+--------------+------------------+----------------------------------+
| table_name   | expected_records | expected_crc                     |
+--------------+------------------+----------------------------------+
| employees    |           300024 | 4ec56ab5ba37218d187cf6ab09ce1aa1 |
| departments  |                9 | d1af5e170d2d1591d776d5638d71fc5f |
| dept_manager |               24 | 8720e2f0853ac9096b689c14664f847e |
| dept_emp     |           331603 | ccf6fe516f990bdaa49713fc478701b7 |
| titles       |           443308 | bfa016c472df68e70a03facafa1bc0a8 |
| salaries     |          2844047 | fd220654e95aea1b169624ffe3fca934 |
+--------------+------------------+----------------------------------+

관계도 다양하고, 아주 마음에 든다. 이제 본격적인 테스트를 해보자.👍
데이터 크기 때문인지, cpu = 1, memory = 256mb로 mysql을 띄웠더니, 메모리 초과가 발생했다.
cpu = 1, memory = 512mb로 메모리를 올려서 테스트 시작😎

docker run --name mysql-cpu1-memory512m -e MYSQL_ROOT_PASSWORD=root -d --cpu-shares=1024 --memory=512m -p 3309:3306 mysql:8.0.27
profile
기록을 통한 성장을
post-custom-banner

0개의 댓글