오늘은 TypeOrm method인 save(), insert(), update() 에 대해서 알아보려고 한다.
얼핏보기에는 비슷해서 아무거나 써도 될 것 같은데 이게 별거 아닌 것 같아도 성능에도 영향을 끼친다.
우선 typeorm 공식 홈페이지에 나와있는 사진을 보면서 한개씩 알아보자.
SAVE()
save() 메서드는 값이 없으면 insert 기능을 하여 데이터를 저장하고 값이 존재하면 덮어쓴다.
그러고 저장된값을 select해서 리턴한다.
수정할때 save()는 기존의 데이터를 위에 덮어쓰는 방식이라서 기존데이터가 사라진다.
쉽게말해 document단위로 데이터를 변경한다.
ex) 필드가 5개 존재하고 save로 2개의 필드를 수정하려면 5개의 필드는 전부 사라지고 2개의 필드만 저장된다.
INSERT()
insert() 메서드는 값이 없으면 insert 기능을 하여 데이터를 저장하고 값이 존재하면 duplicate 오류를 발생시킨다.
UPDATE()
update() 메서드를 사용하면 바꾸고싶은 특정 필드만 수정할 수 있다.
-----------------------------------------------------------------------------------
결론
save() 보다 insert() 가 빠르다.
- save()가 select해서 리턴하기 때문에
save() 보다 update()가 빠르다.
- save()는 전체 document를 저장하는 반면 update는 변화한 부분만 찾아서 변경해주기 때문에
- 당연한 소리지만 이게 동시 접속자수가 커지면 2배 이상 속도차이가 나게된다.
'Web > TypeOrm' 카테고리의 다른 글
[TypeORM] 밤 12시, 수만 명의 출석체크에 대응한 동시성 문제 해결기 (1) | 2024.03.20 |
---|---|
[TypeOrm] loadRelationCountAndMap() - 관계된 데이터의 갯수를 쉽게 세는 방법 (0) | 2023.11.05 |
[TypeOrm] TypeORM으로 upsert(), save() 안될 시 해결방법 (2) | 2023.03.18 |
[TypeOrm] IN조건으로 배열 검색 "Typeorm find where in array" (0) | 2023.02.15 |
[TypeOrm] timezone: 'z' charset UTC시간 설정 (0) | 2023.01.28 |