Оптимизация модели на основе ORM после запуска - PullRequest
6 голосов
/ 05 февраля 2010

Я использую Hibernate для работы над новым проектом, и когда я работаю, я понимаю, что мое первоначальное видение приложения может не оказаться его судьбой. Данные, которые, я думаю, не будут часто запрашиваться (и, следовательно, загружаться лениво), могут оказаться необходимыми для 85% запросов. И наоборот, данные, которые я загружаю в предположении, что они понадобятся, могут оказаться ненужными так часто, как я думаю.

Существует ли какой-либо инструмент профилирования или метод анализа использования ORM (в частности, Hibernate), который может помочь мне настроить приложение после того, как оно достигнет критической массы?

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

Ответы [ 4 ]

1 голос
/ 05 февраля 2010

Hibernate Profiler может создавать отчеты в реальном времени из статистики времени выполнения hibernate. Генерируются различные предупреждения, например предупреждение о SELECT N + 1.

Может использоваться в системе непрерывной интеграции.

1 голос
/ 05 февраля 2010

Есть ли какой-либо инструмент или метод профилирования анализа использования ORM (в частности: Hibernate), который может помочь мне настроить мой приложение после того, как оно достигло критическая масса?

Hibernate 3 собирает статистика во время выполнения. Может быть стоит посмотреть. В hibernate doc есть раздел " Контроль производительности ".

Единственное, что приходит на ум, это написать несколько сценариев Selenium, которые имитировать фактическое использование и делать нагрузочное тестирование с конфигурациями. Это похоже на это может работать, но и чувствует себя как очень окольный способ получения Информация, которую я ищу.

Вы должны сначала попытаться захватить некоторую реальную рабочую нагрузку. Тогда разберись, как его воспроизвести.

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

1 голос
/ 05 февраля 2010

"... помогите мне настроить приложение после того, как оно достигло критической массы?"

Это важно.

Вы настраиваете свое приложение - в целом. Приложение + структура базы данных + отображения ORM Hibernate + все остальное.

Ваше приложение должно иметь журналы, которые вы можете использовать для настройки своего приложения. Если у вас нет подходящего ведения журнала, сейчас самое время добавить соответствующий набор журналов, чтобы определить, какие варианты использования используются и что происходит.

Настройка журналов так же важна, как и журналы отладки. И они являются первоклассной частью вашего приложения.

0 голосов
/ 05 февраля 2010

Используйте профилировщик / регистратор SQL вашей базы данных, чтобы отслеживать вкладки вашей производственной базы данных. Следите за запросами с отложенной загрузкой или часто повторяющимися запросами, которые могут указывать на проблему N + 1 (перебор отложенной коллекции, загрузка каждого объекта по отдельности).

Мне неизвестна (любая) ORM, которая предоставляет такую ​​возможность.

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