Python/django

[ Django ] orm create bulk - YEOL

tenchoi 2022. 12. 27. 16:40

๐Ÿ“€ ํ™˜๊ฒฝ 

Python 3.8
VsCode

๐Ÿ”– ๊ฐœ์š”

Django orm์„ ์‚ฌ์šฉํ•ด์„œ create๊ฐ€ ์—ฌ๋Ÿฌ ๋ฒˆ์ผ ๋•Œ bulk๋กœ ํ•œ ๋ฒˆ์— ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“’ ๋ชฉ์ฐจ

  • bulk๋ž€

 

- bulk๋ž€

๋‹ค์ˆ˜์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑ, ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•  ๊ฒฝ์šฐ ํ•œ ๋ฒˆ์˜ ์ปค๋„ฅ์…˜์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

์‚ฌ์šฉ ์ด์œ ๋Š” ํฌ๋ฌธ์œผ๋กœ  ์ปค๋„ฅ์…˜์„ ์—ฌ๋Ÿฌ ๋ฒˆ ํ•ด์„œ ์ƒ์„ฑ, ์—…๋ฐ์ดํŠธ๋ฅผ ํ•˜๋ฉด ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. 

๋ ˆ์ด์ง€ ๋กœ๋”ฉ์ด๋ผ๊ณ  ์ณ๋„ db์™€ ์ปค๋„ฅ์…˜ ๋˜๋Š” orm์ด๋‚˜ ์ฟผ๋ฆฌ๋ฅผ  2~N ๋ฒˆ ๋Œ๋ ค์•ผ ํ•˜๋Š” ๊ฒƒ๋ถ€ํ„ฐ latency์— ์‹œ์ž‘์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

for i in range(100):
	some_model.objects.create(name= 'name')

 

๊ฐ™์€ 100๋ฒˆ์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ผ๋„ ์ž์ฒด์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค๊ณ  bulk๋ฅผ ์ด์šฉํ•ด ํ•œ๋ฒˆ์— ์ƒ์„ฑํ•˜๋ฉด ์„ฑ๋Šฅ ํ–ฅ์ƒ์— ํ›จ์”ฌ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

for i in range(100):
	names.append(some_model(name = i))

db.objects.bulk_create(names)

 

๐ŸŒŸ ๊ทผ๊ฑฐ ์žˆ๋Š” ์กฐ์–ธ์€ ์–ธ์ œ๋‚˜ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. ์„ฑ์‹คํ•œ ์ฝ”๋”ฉ ํ•˜์„ธ์š”.