Community

개발자 99% 커뮤니티에서 수다 떨어요!

← Go back
Django에서 대량의 데이터를 빠르게 만드는 방법
#python
3년 전
4,092
5

거두절미하고, 장고에서 대량의 데이터를 빠르게 작성하는 방법을 소개하겠습니다.

1. 기존 작성 방법

우선 기존의 User.objects.create로 10만 양병(?)을 해보겠습니다.

undefined

간단하게 유저네임을 0부터 99999까지 들어가고 패스워드를 12345678로 통일하여 10만 양병을 해 봅니다.

undefined

undefined

undefined

한 번 10만 양병(?)을 할 때마다 모든 유저 데이터를 다 깨끗하게 지우고서 3회 작성하는 데에 평균 98.45초가 걸렸습니다.

2. bulk_create로 작성하는 방법

undefined

소스를 조금 변경하였습니다. 크게 달라지지 않았습니다.start 시간을 재는 곳과 end 시간을 재는 소스 사이만 달라졌습니다.

undefined

list를 작성하도록 변경한 뒤에, 10만회의 반복을 할 동안 users_list에 User 클래스의 인스턴스를 10만번 넣어주되 똑같이 유저네임과 패스워드를 세팅합니다.

그런 뒤에 User.objects.bulk_create(users_list)로 위에서 작성한 list를 bulk_create 합니다.

벌크라는 말은 우리가 아는 그 벌크입니다. 대량...

undefined

undefined

undefined

bulk_create로 바꿨을 뿐인데 3회 평균 8.46초로 거의 10%의 소요시간으로 줄어들었습니다.

물론 서버에서 실시간 처리를 하는 것이 대부분이라 사용할 일이 없을수도 있겠으나 배치 처리를 하는 등 대용량의 처리가 필요할 때 매우 유용합니다.

bulk_create는 첫 번째 args로 list object를 받는데 상세 내용은 아래 doc을 참고 바랍니다.

https://docs.djangoproject.com/en/3.2/ref/models/querysets/#bulk-create

끝!

5 comments