Оптимизация большого импорта в php - PullRequest
2 голосов
/ 04 июня 2010

У меня есть простой импортер, он просматривает каждую строку довольно большого CSV и импортирует его в базу данных.

У меня вопрос: должен ли я вызывать другой метод для вставки каждого объекта (генерируя DO и сообщая, что его маппер вставляет) или я должен жестко кодировать процесс вставки в методе импорта, дублируя код?

Я знаю, что элегантная вещь - это вызов второго метода, но я все время слышу, что вызовы функций стоят дорого.

Что ты думаешь?

Ответы [ 3 ]

4 голосов
/ 04 июня 2010

Многие бренды RDBMS поддерживают специальную команду для массового импорта. Например:

Использование этих команд предпочтительнее, чем вставка одной строки за раз из источника данных CSV, поскольку команда массовой загрузки обычно выполняется по крайней мере на порядок быстрее.

1 голос
/ 04 июня 2010

Это не должно иметь значения, поскольку вставка займет, вероятно, на порядки больше, чем код php.

Как уже говорили другие, массовая вставка даст вам гораздо больше пользы. Эта оптимизация на уровне линии сделает вас слепыми только к хорошим оптимизациям более высокого уровня.

Если вы не уверены, выполните простую синхронизацию обоими способами, чтобы выяснить это не займет больше пары минут.

Подумайте о том, чтобы объединить оба подхода для создания пакетных вставок, если все сразу достигнет некоторого ограничения памяти / времени / ....

1 голос
/ 04 июня 2010

Я не думаю, что это имеет большое значение. Рассмотрим объемную вставку. По крайней мере, убедитесь, что вы используете транзакцию, и рассмотрите возможность отключения индексов перед вставкой.

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