很多时候,我们希望能知道我们写的项目在运行过程中到底执行了哪些SQL语句,或者说一个页面中访问了几次数据库。好让我们在优化的时候提供一些方向。
举个例子,作者在有时候,会自信的认为这个页面很简单,估计也就顶多5条SQL语句就可以了。可是当打开SQL报告之后才吓傻眼,几十条SQL,看的是触目心惊。
或者有时候,同事找到我说,怎么页面执行的这么慢,我通常让他自己去看SQL执行报告,一打开,发现一个页面执行了上百条的SQL。这样的页面能快到哪里去?在循环里面访问数据库,是想考验数据库的承受能力吗?
好了,废话完了。现在说回正经事,首先是,如果打开SQL报告。默认Farseer是关闭了SQL报告的。请记住,在生产环境下(线上环境)请不要打开这个SQL报告。因为它会直接影响到你的系统性能哦。只在开发环境下打开。
开启SQL记录在~/App_Data/System.Config 中,有其中一项:IsWriteDbLog 默认是False 的,将它设为True 即可。 这个配置文件不存在时,执行下项目,Farseer会检查配置文件是否存在,不存在则会创建出来。
当打开后,再次尝试运行下项目。你会发现,在~/App_Data/ 多了一个SQL文件夹。没错,这里就是项目运行过程中产生的SQL的记录。
这个SQL记录文件会一直记录着。并且会根据访问的路径来存放物理文件目录。
我们看看这个SQL报告里面记录了哪些信息:
都是毫秒单位显示
生成:Farseer.Net 生成Sql文本所需要的时间。
获取:将SQL文本提交(ADO.NET)给数据库执行的时间,也就是数据库执行时间。
转换:取得数据的DataTable转换成List<Users>的转换时间。
通过这么一份简单的SQL报告,可以让你更加清楚自己项目的执行情况。
导航 广告时间QQ群:116228666 (Farseer.net开源框架交流) 请注明:Farseer.Net
Farseer.Net是一款ORM框架 + 常用工具 + 扩展集合。
Farseer 意为:先知、预言家 通常在某些场合时,提供计谋、策略。也希望该框架能给大家提供最大化的便捷。
ORM:其英文全称是:Object(对象) Relational(关系) Mapping(映射)
Farseer.Net的目标是:快速上手、快速开发、简单方便。
1 new User { ID = 1, Name = "张三" }.Insert()