NHibernate系列文章四:NHibernate运行时监控

2022-12-12,,,,

摘要

有三种方式可以实现NHibernate运行监控,监控的信息包括:执行了的SQL语句、NHibernate执行过程、数据库性能分析。这对我们学习NHibernate有很大的帮助,在工作中也能快速定位问题,最好是能够掌握他们。

1. LogSqlInConsole

修改上一节的SessionFactory属性,添加行x.LogSqlInConsole = true;

         public static ISessionFactory SessionFactory
{
get
{
if (_sessionFactory == null)
{
var cfg = new Configuration(); cfg.DataBaseIntegration(x =>
{
x.ConnectionString = "Data Source=localhost;Initial Catalog=NHibernateDemoDB;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False";
x.Driver<SqlClientDriver>();
x.Dialect<MsSql2008Dialect>();
x.LogSqlInConsole = true;
});
cfg.AddAssembly(Assembly.GetExecutingAssembly());
_sessionFactory = cfg.BuildSessionFactory();
}
return _sessionFactory;
}
}

修改main函数,只保留调用GetAll方法的语句

         static void Main(string[] args)
{
IList<Customer> list = GetAll();
Console.WriteLine("customer list count: {0}", list.Count);
foreach(var item in list)
{
Console.WriteLine("{0} {1}", item.FirstName, item.LastName);
}
Console.ReadLine();
}

运行程序得到结果:

可以看到,NHibernate自动生成了SQL查询语句。

2.  使用NHibernateProfile

从NHibernateProfile下载。目前版本是3.0。

下载后解压缩,执行文件NHProf.exe。按照提示注册一个trial license,发送license的xml文件到注册邮箱,登录注册邮箱,将license的xml文件从收件箱拿下到本地,导入license的xml文件。

导入后,看到这个窗口。

从解压后的文件夹中找到dll文件HibernatingRhinos.Profiler.Appender.dll,将他copy到工程目录的$\packages文件夹下,在工程中添加引用这个文件。

修改main函数首行添加代码HibernatingRhinos.Profiler.Appender.NHibernate.NHibernateProfiler.Initialize();

         static void Main(string[] args)
{
HibernatingRhinos.Profiler.Appender.NHibernate.NHibernateProfiler.Initialize();

IList<Customer> list = GetAll();
Console.WriteLine("customer list count: {0}", list.Count);
foreach(var item in list)
{
Console.WriteLine("{0} {1}", item.FirstName, item.LastName);
}
Console.ReadLine();
}

执行程序,得到NHibernateProfile监控窗口。

NHibernate Profile不但可以监控到执行的sql语句,而且能够抓取到NHibernate执行过程以及显示Hibernate异常详细信息。

3. 使用Microsoft SQL Server自带的工具SQL Server Profile

在Microsoft SQL Server Management Studio里,选择Tools->SQL Server Profile,在弹出对话框中输入连接的用户名和密码后,点击"OK",来到如下窗口:

选择"Events Selection",将Audt Login / Logout和ExistingConnection前面的勾去掉(这里只关心我们应用程序执行的SQL语句),点击"Run"。

来到这个窗口:

再次执行程序,得到监控结果:

这里有更详细的数据库性能信息,比如每条语句用了多长时间、应用进程ID等。

NHibernate系列文章四:NHibernate运行时监控的相关教程结束。

《NHibernate系列文章四:NHibernate运行时监控.doc》

下载本文的Word格式文档,以方便收藏与打印。