Время процессора, необходимое для массовой загрузки 2 ГБ базы данных - PullRequest
2 голосов
/ 14 июля 2011

Я нанял программиста для переноса моего веб-сайта - первоначально реализованного с использованием Django и MySQL - на Google App Engine. Размер базы данных исходного веб-приложения составляет около 2 ГБ, а самая большая таблица содержит 5 миллионов строк. Чтобы перенести это содержимое, насколько я понимаю, программист сериализует базу данных в JSON, а затем загружает ее в механизм приложений Google.
Пока его загрузка заняла 100 часов процессорного времени, как выставлено GAE, но похоже, что в базу данных загружено только около 50 или 100 МБ. Это разумное количество процессорного времени для такого небольшого количества данных? MySQL может загрузить столько данных за несколько минут, поэтому я не понимаю, почему GAE будет в 1000 раз медленнее. Он что-то делает неэффективно?

Ответы [ 3 ]

2 голосов
/ 15 июля 2011

Это кажется высоким, и, вероятно, они заставляют сервер выполнять большую работу (декодирование JSON, кодирование и сохранение сущностей), которую можно выполнить на клиенте. В комплекте SDK уже есть загрузчик, и если по какой-то причине он не подходит, то remote_api, на котором основан загрузчик, предоставляет более эффективный вариант, чем ваш собственный.

1 голос
/ 15 июля 2011

Я массово загрузил ГБ данных, однако я написал свой собственный модуль массовой загрузки (на основе определенных ими интерфейсов), и это заняло 25 часов процессорного времени.

Для получения дополнительной информации вы можете взглянуть на Производительность App Engine Bulk Loader

0 голосов
/ 14 июля 2011

Это во многом зависит от того, как он сериализует данные.Я сильно подозреваю, что он делает что-то неэффективное, так как да, это смешно для такого количества данных.Ваша неэффективность, вероятно, заключается во времени передачи и времени начала / остановки для каждого запроса.Если он сериализует каждую строку и отправляет ее обработчику по одному, тогда я могу полностью понять, что это занимает вечность и отнимает много времени процессора.

...