Как ускорить операцию вставки записи в django с бэкэндом postgres - PullRequest
0 голосов
/ 18 августа 2011

Я строю сервис геолокации на основе Django, который определяет местоположение пользователя по его IP-адресу.Первое, что мне нужно сделать, это вставить данные ip в мою базу данных.

Я использовал следующий код (упрощенно) для вставки записей в мою базу данных:

 for ipLoc in ipSeeker.ipLocationList:
     placeName =ipLoc.country + ipLoc.area
     IPLog.objects.create(
                startIP = int_to_dqn(ipLoc.startIP), 
                endIP = int_to_dqn(ipLoc.endIP), 
                place = placeName
     ).save()

ipLocationList имеет приблизительно 400 тыс. Записей ip.И мой сценарий вставляет только 20 тысяч записей за 20 минут.Это слишком медленно и не может быть принято.

Итак, мой вопрос: где узкое место и как я могу сделать это быстрее?

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 22 августа 2011

Я нашел полное руководство по загрузке базы данных GEOIP в postgresSQL в siafoo. Это хорошо написано и охватывает наиболее подробно. Ссылка http://www.siafoo.net/article/53

1 голос
/ 18 августа 2011

Используйте raw sql и транзакции для django-стороны: https://docs.djangoproject.com/en/dev/topics/db/sql/ вместе с командой Copy из Postgres!

Какой самый быстрый способ сделать массовую вставку в Postgres?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...