| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Ruby On Rails > Настройка производительности ruby |
| Автор: ANTON_AL 20.12.2009, 17:31 | ||||
| Доброго дня! Помогите, пожалуйста, в следующем вопросе: Я выполняю миграцию данных, которая добавляет примерно 10000 записей в базу SQLite3 Данная операция выполняется вот уже около 5 минут. Я пишу это сообщение, а миграция всё идёт и идёт. Во время миграции я для каждой записи случайным образом генерирую временной интервал (начальная и конечная дата). Может это даёт основную нагрузку ?
Смотрю в Process Monitor в Windows, вижу, что интерпретатор Ruby использует лишь 4 % процессорного времени. Можно ли как-нибудь настроить ruby, чтобы он не стеснялся PS: Миграция закончилась
... слишком уж много времени для такой простой операции |
| Автор: shine 20.12.2009, 19:02 |
| 1) Выяснить действительное место кода которое тормозит расставив по коду миграции распечатки с выводом текущего времени. 2)Подозреваю что таким местом окажется не функция генерации случчайного числа а именно вставка в БД с коммитом после каждого микроинсерта. Обычно такое лечится инсертами в рамках одной большой транзакции или объединением нескольких инсертов на ввставку одной записи в один инсерт добавляющий несколько записей сразу. Для таких вещей есть специальные рельсовые плугины (гугл в помощь). |
| Автор: source777 20.12.2009, 19:35 | ||
| ANTON_AL 1) Почему используется SQLite3, а не MySQL? 2) Почему заполнение БД идёт из миграции? Миграции существуют для создания структуры БД и в случае необходимости могут выполнять обработку уже существующих данных. 3) Какова цель вызова: DateTime.parse t1.to_s ? 4) В принципе генерацию можно упростить до такого:
|
| Автор: ANTON_AL 25.12.2009, 01:55 |
| 1) Пока не определился с базой данных. Просто использую ту, которая настроена по умолчанию 2) Не вижу особых проблем с использованием миграций для добавления данных. Помоему, очень даже удобно, т.к. миграции можно отменить, почистив таблицы из метода self.down В Ruby я пока не силён. Вижу, что коряво получилось генерить даты. В основном запара была с тем, что "Date object is immutable". Вот и приходилось танцевать с бубнами. А, оказывается, всё просто Спасибо огромное за пример. |