3
的Django 1.8,Postgres的20年4月8日Django的生成測試數據慢得令人難以置信
我想準備在DB一些性能測試數據 - 產生100個000 Django的用戶以及其他模型實例。這裏是我的代碼:
for n in range(100000):
# Generate User with one related Profile
user = User.objects.create(username=str(random.random()))
UserProfile.objects.create(custom_id=str(random.random()), user=user)
# For each User generate a Journey with 10 related Visits
journey = Journey.objects.create(user_id=user.id)
for i in range(10):
journey.visit_set.add(Visit(custom_id=str(random.random())))
# Also for each User generate a Progress with 100 related Challenges
progress = Progress.objects.create(user_id=user.id)
for j in range(100):
progress.challenge_set.add(Challenge(custom_id=str(random.random())))
它按預期工作,唯一的問題是,它是令人難以置信的慢。在具有1核心和1Gb RAM的VPS上,花費1個小時才能生成具有相應相關條目的4000個用戶。
消耗的CPU大約是10%,內存200mb,負載平均浮動在1.00左右。
如何加快速度?
嘗試使用['bulk_create'](https://docs.djangoproject.com/en/1.8/ref/models/querysets/#bulk-create)。 –
DB與Django在同一臺服務器上?你可以嘗試在範圍內(10000)並行運行腳本10次並行 – Foon
好的謝謝。但爲什麼現在這麼慢?對於填充數據庫的單個django腳本有沒有限制? –