Я подозреваю, что вам сказали то же самое, что я собираюсь рекомендовать, но я призываю вас рассмотреть все возможности и обесценить их.
Weve consistently been told to optimize our query
- Подозрения всегда связаны с SQL-запросом, сгенерированным ORM, или с количеством времени, которое БД тратит на выполнение запроса. Это разумный совет, и вы должны опровергнуть это, используя следующие методы.
Сначала я бы настроил trace на работающем сервере базы данных, работающем в течение недели. Как только это будет сделано, вы можете получить предложения по индексам или вопросам, связанным с SQL.
Во-вторых, я бы запустил NHProf на своем блоке разработки и провел несколько стресс-тестов на часто используемых страницах или страницах, на которых было много поездок в базу данных, чтобы увидеть, что происходит за кулисами с NHibernate. NHProf даст вам советы по различным проблемам, в том числе; выберите n + 1, неограниченные результаты, возвращено большое количество строк, запросы со слишком большим количеством объединений и т. д. Опять же, этот инструмент неоценим для преодоления разрыва между сервером SQL и вашим кодом.
Надеемся, что после этого упражнения у вас появятся идеи о том, как решить определенные проблемы, представьте кеширование ИЛИ, если вы обнаружите, что у вас нет элементов для решения, дайте ценную обратную связь, которую вы затем сможете опубликовать в группе NHUser.
В конце концов, если подумать, десятки тысяч пользователей используют NHibernate. Я сам использовал NHibernate в течение нескольких лет и подписался на группу NHusers, и раньше я не видел проблемы с перепадом ресурсов процессора. Всегда оказывается, что либо; сгенерированный SQL, база данных находится под давлением или гидратируются большие наборы записей