커리큘럼
home
React
home

SAVE / INSERT 비교

생성일
2025/02/03 06:08
태그

문제

TypeORM에서 save 메서드를 사용할 때 발생하는 비효율적인 데이터 처리 방식입니다.
save 메서드가 실행되면 데이터를 저장할 때마다 INSERT 후 해당 데이터를 SELECT하는 과정이 발생하는 것을 확인했습니다.
한 번에 1,000개의 데이터를 저장해야 하는 경우, 1000번의 SELECT가 추가로 실행되어, 전체 응답 시간에 큰 영향을 미칠 수 있다고 판단했습니다.

해결 방법

대량의 데이터를 삽입하는 상황에서는 INSERT만 처리하는 것이 효율적이라고 생각했고, 로직을 수정하여, 한 번에 가능한 많은 데이터를 삽입할 수 있는 Bulk Insert 방식을 사용했습니다.
save 메서드 대신, 직접 INSERT 쿼리를 작성하여 데이터를 한 번에 DB에 저장하는 방법으로 변경하였고, 각 데이터 삽입 후에 발생하는 불필요한 SELECT 쿼리의 실행을 피할 수 있었습니다.
해당 코드 수정을 통해 결제 알림 데이터를 일괄 삽입함으로써, 불필요한 쿼리 실행을 줄이고 성능을 개선할 수 있었습니다.
이 변경 사항의 성능을 확인하기 위해 console.time() 메서드를 사용하여 각 방법의 응답 시간을 기록했습니다.
아래 표는 알림 개수에 따른 save 메서드와 INSERT 쿼리문 사용의 응답 시간을 비교한 것입니다.
평균을 나타내는 그래프에서 볼 수 있듯이, INSERT 쿼리문을 사용하는 방법이 save 메서드를 사용하는 것보다 훨씬 더 효율적임을 확인할 수 있습니다.
데이터가 많아질수록 성능 차이가 확연하게 나서 성능 개선이 크게 확인됩니다.