Я занимаюсь анализом производительности приложения, над которым я работаю. Приложение основано на веб-интерфейсе (asp.net), используя старую версию NHibernate (1.0) на MSSQL Server (2005).sql-профайлер показывает nhibernate запущенные запросы дважды?
Запуск профайлера против приложения, похоже, показывает что-то немного странное, поскольку мы, кажется, дважды запрашиваем объекты, один раз в качестве прямого запроса и однажды завернутый в sp_executesql. например:
SELECT col1, col2 FROM TABLE exec sp_executesql N'SELECT col1, col2 FROM TABLE'
Глядя на статистику внутри профайлер я могу видеть, что они являются различными событиями (выбранный записывается как событие 45 - SP: StmtCompleted в то время как призыв к sp_executesql записывается как событие 10 - RPC: завершено) ,
Я не слишком много работал с NHibernate до этого, но я не могу себе представить, что это нормальное поведение. Я либо неправильно читаю трассировку профиля (в каком случае, как я должен интерпретировать выше), или есть ли веская причина для этого?
Если это так плохо, как я думаю, есть ли способ отключить это поведение?
Спасибо
ok - так для моего понимания, почему один упакован в sp_executesql, а второй нет? – Chris
и почему запуск оператора sp_executesql вручную не воспроизводит то же поведение? – Chris
Я не очень хорошо знаком с NHibernate, но я бы предположил, что это происходит из-за его настроек команды. Было бы странно, что они стреляли дважды. –