[230217 - TIL] 데이터 삭제/추가 성능 개선

Dongwoo Kim·2023년 2월 20일
0

TIL / WIL

목록 보기
84/113

1. 개요

이번주에 진행했던 성능개선 내용을 이용해서 다른 부분들도 개선할 수 있는지 찾아봤고 비중이 크진 않지만 경우에 따라 의미있을 부분들을 수정해보았다.


2. 데이터 삭제 부분

기존

삭제할 데이터 오브젝트를 for문 안에서 get()으로 불러옴

for deleted_data_no in deleted_data_no_list:
    deleted_data_obj = cur_data_obj_set.get(data_no=deleted_data_no)
     
    deleted_data_obj.delete()

개선

for문 밖에서 filter()로 한번에 불러옴

deleted_data_objs = Data.objects.filter(data_no__in=deleted_data_no_list)
for deleted_data_obj in deleted_data_objs:     
    deleted_data_obj.delete()

또는 filter() 쿼리를 한번에 삭제

deleted_data_objs = Data.objects.filter(data_no__in=deleted_data_no_list)
deleted_data_objs.delete()

3. 데이터 추가부분

기존

for문안에서 create()로 생성

for added_data_no in added_data_no_list:
	added_data_obj = Data.objects.create(data_no=added_data_no)

개선

for문 밖에서 bulk_create()로 한번에 생성

added_data_objs = []
for added_data_no in added_data_no_list:
	added_data_obj = Data(data_no=added_data_no)   
    added_data_objs.append(added_data_obj)
added_data_objs = Data.objects.bulk_create(added_data_objs)

4. 느낀점

데이터 추가/삭제가 큰 비중을 둔 부분은 아니었기 때문에 해당 개선한 내용 그렇게 큰 변화를 주진 못할 것이라 생각이 들고 성능측정도 무의미하다고 여겨진다. 하지만 그동안 DB관련한 내용을 개선하는 과정을 거치면서 ChatGPT와 같은 외부 영향없이 순전히 내 스스로 개선점을 찾고 해결해나갔다는 것에 의미가 있는 것 같다. 앞으로도 DB관련된 내용과 외부API 관련된 코드 부분은 주의깊게 보고 더 효율적으로 작성할 수 있도록 해야할 것이다.

profile
kimphysicsman

0개의 댓글