1. MYSQL Index 설정 후 테이블 조회 성능이 향상 되었는지 확인하기 위해서는 데이터 베이스에 많은 양의 데이터가 들어가 있어야 한다고 생각했다. mysql 프로시저로 while문 작성하여 실행.
= post테이블 title컬럼에 hello1부터 시작해서 hello1000000(백만)까지 데이터 삽입
DELIMITER //
CREATE PROCEDURE getwhile()
BEGIN
DECLARE counter INT DEFAULT 1;
WHILE counter <= 1000000 DO
-- while 문으로 counter 올리기
insert into post(title) values(concat("hello",counter));
-- 반복할 작업 = post테이블 title 컬럼에 hello를 counter번호에 맞게 추가 ex.) hello1~hello1000000
SET counter = counter + 1;
-- 종료 조건 = while 문으로 counter 올리기
END WHILE;
END //
DELIMITER ;
2. 데이터 삽입 후 post테이블 title컬럼에 데이터가 정상적으로 들어갔는지 title컬럼을 count하여 총 데이터 갯수 확인
= 1000007개 데이터 정상 삽입 확인
3. post 테이블 데이터 오름차순 조회 시 1.859초 소요확인
4. post 테이블 데이터 내림차순 조회 시 2.828초 소요확인
5. post테이블 id = 900000번 조회(PRIMARY KEY 설정 되어있어서 속도 엄청 빠름)
6. post테이블 title = 'hello900000' 조회(0.5초)
7. post_title index 설정 전
8. post테이블 title 컬럼 인덱스 생성(2.9초 소요)
9. post_title index 설정 후
10. post_title index 설정 후 post 테이블 title='hello900000'조회(10번의 시도 중 최대 조회 시간 0.016초)
11. index 설정 후 post 테이블 전체조회
6번. post테이블 title = 'hello900000' 조회시간은 0.5초가 걸렸던 반면, 10번. post_title index 설정 후 post 테이블 title='hello900000'조회시간은 10번의 시도 중 9번은 0.000초가 걸렸고 나머지 1번은 0.016초가 걸렸다.
index설정 후 데이터 조회시간을 0.016초하였을 때 조회시간 차이로만 보면 30배이상 조회속도가 상승했다.
다른컬럼없이 하나의 컬럼(title)에만 데이터를 삽입해서 테스트했는데, 다른컬럼들에도 백만개씩의 데이터들이 들어있었다면 index설정 후 조회시간 차이가 이번 테스트만큼은 나지 않을거라고 생각한다.
데이터베이스 index 설정 전과 설정 이후 데이터 조회시간이 확연하게 차이가 난것을 확인할 수 있었다.
'DB STUDY > DB Practice' 카테고리의 다른 글
Redis(Remote Dictionary Server) 기본 정리 (2) | 2023.11.27 |
---|---|
MYSQL 3개 테이블 LEFT JOIN하기(두번 JOIN) (0) | 2023.11.27 |
MYSQL 1차, 2차, 3차 정규화 진행하기 (3) | 2023.11.24 |
MYSQL ORDER SYSTEM 논리적 데이터 모델링 (2) | 2023.11.24 |