![]() |
|
![]() ![]() ![]() |
|
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. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Ruby On Rails | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |