프로젝트 회고

Optimizer 中 인덱스에 따른 삽입 속도 저하

iksadnorth 2023. 11. 28. 17:06

👣 개요

인덱스의 여부에 따른 삽입 속도 저하 여부를 확인하는 실험.

 

👣 실험 계획

Item은 name에 인덱스가 부여되지 않았고 
해당 Item 테이블의 Row 갯수는 100만 개 입니다.

실험을 위해 사용된 코드는 위와 같이 하나의 엔티티를 저장할 때마다
트랜잭션이 마무리가 되면서 쿼리가 날아가게 된다.

우선 임의의 입력값을 만드는 메서드를 만들어준 다음

대략 10000개의 엔티티를 저장하는 과정을 실행할 계획이었다.
저장한 후, Rollback으로 저장을 취소하는 것이 아닌 최대한 실제 상황과 비슷하게
저장하고 테스트 마지막에 자원을 회수하는 방법으로 테스트를 계획했다.

 

👣 실험 수행

⚗️ 대조군 - 인덱스 없이 삽입

우선 10000번 정도 엔티티를 저장했을 때의 결과다.

13936 ms, 즉 13.936초가 걸림을 알 수 있다.

 

⚗️ 실험군 - 인덱스 생성 후 삽입

인덱스를 만들기 위해 다음과 같은 쿼리를 실행한다.

그런 다음, 10000번 정도 다시 메서드를 호출했을 때의 결과다.

16012 ms, 즉 16.012초가 걸림을 알 수 있다.
즉, 인덱스에 의해 다소 데이터 생성 성능이 떨어짐을 알 수 있다.

 

👣 실험 결과

결과적으로 인덱스로 인한 데이터 생성 시간이 15% 정도 늘어남을 알 수 있다.
이것을 보아 필요한 것이 아니라면 인덱스 생성을 신중히 결정해야 함을 알 수 있다.

  특징 수행 시간 향상 효과
대조군 인덱스 X 13936 ms -
실험군 인덱스 O 16012 ms 14.90% 증가