目录
Spring.Net+Nhibernate+ASP.MVC+EasyUI实践(一)
Spring.Net+Nhibernate+ASP.MVC+EasyUI实践(二)
Spring.Net+Nhibernate+ASP.MVC+EasyUI实践(三)
Spring.Net+Nhibernate+ASP.MVC+EasyUI实践(四)
使用工具NHibernate Profiler,Nhibernate的性能监视软件
NHibernate分析器(NHProf)是我们期待的入门级产品。除了有完整的统计信息外,它还显示了最近完整的SQL调用列表,并使用堆栈来反向跟踪调用它的代码。NHProf的界面简洁并有加强的交叉引用功能,它能很轻松地从针对个别查询语句的检查,切换到该代码块所使用到的全部查询语句。
NHibernate分析器最重要的部分是预警功能。一些警报会显示当前数据库错误所产生的问题,或者在多个线程中使用同一个会话等意外情况。其他警报则会显示潜在的问题,比如本该批量操作的场景被拆分成大量单独执行的写操作。还有一些警告用来提示随后可能出现的问题,比如未绑定结果集
未绑定结果集即已执行查询但未明确使用NHibernate的SetMaxResults()抑或SQL的TOP和LIMIT语句来限定的返回记录。通常,这意味者应用程序假设该查询总是返回少量记录。在开发和测试过程中,这种做法很有效,但是,在生产环节中却是一个定时炸弹。
NHibernate分析器的另一面就是它的植入性。你不可以附加到一个正在运行的进程,必需提前配置好。虽然NHibernate分析器建议直接引用在你的程序中,log4net用户也可以通过设置app.config来激活该分析。
NHibernate Profiler是一个商业产品,起始价格是每用户300美元。
在web.config中的<log4net>增加
<appender name="NHProfAppender" type="HibernatingRhinos.Profiler.Appender.NHibernate.NHProfOfflineAppender, HibernatingRhinos.Profiler.Appender" > <file value="nhprof_output.nhprof" /> </appender>
<logger name="HibernatingRhinos.Profiler.Appender.NHibernate.NHProfAppender.Setup"> <appender-ref ref="NHProfAppender"/> </logger>
MVC项目中引用HibernatingRhinos.Profiler.Appender.dll,这个dll在安装程序目录里
HomeController中添加
HibernatingRhinos.Profiler.Appender.NHibernate.NHibernateProfiler.Initialize();
启用NHibernate Profiler监测测试代码和数据库间的通信:
public ActionResult Index()
{
HibernatingRhinos.Profiler.Appender.NHibernate.NHibernateProfiler.Initialize();
var a = UserDepInfoManager.Get(1);
ViewBag.Message = a.DepName + a.Id;
try
{
log4net.Config.XmlConfigurator.Configure();
UserDepInfo user = new UserDepInfo { DepID = 2, DepName = "liuhuan" };
UserDepInfoManager.CreateUser(user);
}
catch (Exception ex)
{
logger.Error(ex);
throw ex;
}
return View();
}
打开主程序NHProf.exe就可以运行了
效果如图: