![]() |
|
|
![]()
|
|
| ANTON_AL |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 292 Регистрация: 27.1.2007 Репутация: нет Всего: нет |
Доброго дня!
Помогите, пожалуйста, в следующем вопросе: Я выполняю миграцию данных, которая добавляет примерно 10000 записей в базу SQLite3 Данная операция выполняется вот уже около 5 минут. Я пишу это сообщение, а миграция всё идёт и идёт. Во время миграции я для каждой записи случайным образом генерирую временной интервал (начальная и конечная дата). Может это даёт основную нагрузку ?
Смотрю в Process Monitor в Windows, вижу, что интерпретатор Ruby использует лишь 4 % процессорного времени. Можно ли как-нибудь настроить ruby, чтобы он не стеснялся PS: Миграция закончилась
... слишком уж много времени для такой простой операции Это сообщение отредактировал(а) ANTON_AL - 20.12.2009, 17:51 |
||||
|
|||||
| shine |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 20.10.2006 Репутация: 2 Всего: 5 |
1) Выяснить действительное место кода которое тормозит расставив по коду миграции распечатки с выводом текущего времени.
2)Подозреваю что таким местом окажется не функция генерации случчайного числа а именно вставка в БД с коммитом после каждого микроинсерта. Обычно такое лечится инсертами в рамках одной большой транзакции или объединением нескольких инсертов на ввставку одной записи в один инсерт добавляющий несколько записей сразу. Для таких вещей есть специальные рельсовые плугины (гугл в помощь). --------------------
An investment in knowledge always pays the best interest. © Benjamin Franklin |
|||
|
||||
| source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 12 Всего: 56 |
ANTON_AL
1) Почему используется SQLite3, а не MySQL? 2) Почему заполнение БД идёт из миграции? Миграции существуют для создания структуры БД и в случае необходимости могут выполнять обработку уже существующих данных. 3) Какова цель вызова: DateTime.parse t1.to_s ? 4) В принципе генерацию можно упростить до такого:
Это сообщение отредактировал(а) source777 - 20.12.2009, 19:36 -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
| ANTON_AL |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 292 Регистрация: 27.1.2007 Репутация: нет Всего: нет |
1) Пока не определился с базой данных. Просто использую ту, которая настроена по умолчанию
2) Не вижу особых проблем с использованием миграций для добавления данных. Помоему, очень даже удобно, т.к. миграции можно отменить, почистив таблицы из метода self.down В Ruby я пока не силён. Вижу, что коряво получилось генерить даты. В основном запара была с тем, что "Date object is immutable". Вот и приходилось танцевать с бубнами. А, оказывается, всё просто Спасибо огромное за пример. Это сообщение отредактировал(а) ANTON_AL - 25.12.2009, 01:58 |
|||
|
||||
| source777 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 12 Всего: 56 |
Вставка данных в SQLite дело не быстрое, поэтому тут должен стоять выбор или создавать 10000 записей или использовать SQLite, но не делать это одновременно, как сделал ты.
Это не значит, что их нет. Каждый инструмент должен использоваться для того, для чего предназначен. Загружать демо-данные через миграции это абсолютно тоже самое, что забивать гвозди микроскопом. Прочитай guide по миграциям, чтобы понять их предназначение. Тем более, что с недавних пор в Rails даже не надо писать собственный rake-task для загрузки демо-данных, как это было принято раньше. См. seed-data -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
||||
|
|||||
![]()
|
| Правила форума "Ruby on Rails" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Ruby On Rails | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |