실험 환경

TypeORM, MySQL, Nest.js, TypeScript 이용

 

코드

// Insert
async bulkInsert(users: User[]) {
    const newUser = users.map((user: User) => new User({ name: user.name }));
    const startTime = Date.now();
    const insertResult = await this.userRepository.insert(newUser);
    const result = insertResult.identifiers.map((user: User) => {
      return { id: user.id };
    });
    const duration = Date.now() - startTime;
    this.logger.log(
      `Bulk "insert" of ${users.length} users completed in ${duration}ms`,
    );
    return { duration, result: result.length };
  }
  
// Save
async bulkSave(users: User[]) {
    const newUser = users.map((user: User) => new User({ name: user.name }));
    const startTime = Date.now();
    const result = await this.userRepository.save(newUser);
    const duration = Date.now() - startTime;
    this.logger.log(
      `Bulk "save" of ${users.length} users completed in ${duration}ms`,
    );
    return { duration, result: result.length };
  }

 

Postman 을 이용하여 실험

4 명의 유저

Insert 방식을 이용한 결과
save 를 이용한 결과

100 명을 저장해본 결과

 

300 명을 저장해본 결과

  insert save
4 명 3 ms (평균)  8 ms (평균)
100명 12 ms 43 ms
300명 28 ms 91 ms

 

결론

ms 단위의 차이라 미세하지만 데이터가 늘어나면 늘어날수록 insert가 더 빠르게 처리하는 것을 알 수 있다.

 

+ Recent posts