Алгоритм тестирования для большого набора данных - PullRequest
2 голосов
/ 12 мая 2011

Я реализую статистический алгоритм, который требует доступа к большому выборочному набору данных для правильного тестирования. Большой размер - 50 000 строк в одной таблице, MySQL.

Я бы хотел использовать традиционные методы RSpec для тестирования, но создание набора образцов и загрузка его в БД приводит к двум проблемам.

  • Очень медленно / интенсивно с использованием Active Record create. Я не исследовал различные варианты создания, чтобы пропустить проверку, так как модели довольно простые, и я предполагаю, что это не будет иметь большого значения для скорости
  • Неправильная очистка с использованием хаки mysqlimport (имеется в виду данные, оставленные в базе данных после теста, несмотря на явный вызов DatabaseCleaner в блоке: after)

Создание графа объектов в памяти возможно, но я не боюсь, что я немного боюсь переопределить функциональность AR.

Есть идеи, лучшие практики?

Спасибо! Джастин

1 Ответ

3 голосов
/ 14 мая 2011

Это только частичный ответ, но:

  • Очень медленно / интенсивно с использованием Active Record create.(...) Я полагаю, что разница в скорости не будет огромной

Это большая разница в скорости.В PostgreSQL есть хорошее руководство по этому вопросу:

http://www.postgresql.org/docs/9.0/interactive/populate.html

Большинство из них относится непосредственно к MySQL:

  • Используйте одну транзакцию, а не многие из них.
  • Загрузка данных в файл: http://dev.mysql.com/doc/refman/5.5/en/load-data.html
  • Удаление индексов и воссоздание их после вставок.
  • Отключение ограничений fkey при загрузке данных (предполагается, что ваши данные чисты,конечно).
  • Предоставьте MySQL много ресурсов.
  • Отключите репликацию, если применимо.
  • Неправильная очистка с использованием взломанного mysqlimport (имеется в виду данныепосле проверки остается в базе данных, несмотря на явный вызов DatabaseCleaner в блоке: after)

Если вы хотите очистить таблицы от всех их данных, попробуйте усечь:

http://dev.mysql.com/doc/refman/5.5/en/truncate-table.html

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