这篇文章将介绍在使用我的通用数据访问层时, 如何监视程序在运行时发生了哪些数据库的操作。
对于很多数据库的应用程序来说,在做性能优化时,就必须知道程序在任何用户操作中,发生了哪些数据库的调用操作, 如果发现有不合理的调用,或者发现经常在重复执行同样的操作,就可以采取一些改进的措施。但是,在这个决策之前, 了解程序对数据库的访问细节是非常必要的。
我的通用数据访问层 在提供其它方便功能的同时,也支持监视程序对数据库的访问情况, 毕竟对于数据库的操作是由数据访问层最后发出的。于是在另一个辅助工具的配合下,可以非常方便地了解程序对于数据库的操作详情。
当然了,对于像Sql Server这样有类似Profiler工具支持的数据库来说,这个功能或许意义不大,但FishWebLib的设计是支持所有的数据库, 比如:我以前使用的MySql就没这种工具,只好使用自己的这个工具了。
有图有真相,为了更好的展示,这里贴几个图片来给大家看看
注意:本文所涉及的所有文件及程序,都是可以下载的,如果需要,请点击右边链接: 通用数据访问层及Ajax服务端框架的综合示例,展示与下载
操作步骤:
1. 先启动 FishSQLProfiler.exe ,将FishSQLProfilerLibrary.dll复制到 演示网站的bin目录下, 双击“启动-演示程序.bat”即可启动演示网站。
2. 打开演示网站的“商品管理”页面, 来看看这二个界面的显示吧。
说明:从上图可以看出,这个页面在显示时,发生了二次数据库的访问操作,而且是在二个连接中执行。图片也显示第二次调用存储过程的详细情况。
3. 再来个复杂点的操作,点击FishSQLProfiler.exe工具栏中的删除按钮,清除现有的记录,
打开演示网站的“新增订单”页面,输入一些订单信息后,如图:
4. 点击按钮“确定保存此订单记录 并继续新增”后,再来看FishSQLProfiler.exe的界面
从上图可以看出,这次的UI操作,只打开了一次数据库的连接,但执行了7次存储过程的调用操作,并且发生一个事务中(蓝色粗体表示)。
5. 再贴个数据访问失败的界面:
选择那条错误的记录,将可以看到如下显示:
特色说明
有些人看了这个工具后,总认为它是多余的,总认为有个【SQL Server Profiler】,其它的东西就是没有意义的。 SQL Server Profiler这个工具,我也常用啊。 你用它去监视一个局域网的SQL Server看看,你还能分辨哪些操作是由您引发的吗??
我的工具则不同,它是配合我的数据访问层一起工作的,由我的数据访问层告诉它当前用户触发了什么数据库的操作, 因此在分析本机程序访问数据库时,可以很直观的知道:您的某个操作引发了什么样的数据库调用,以及调用的各种细节参数。
更何况我的工具不止针对SQL Server有效,理论上,.net支持的,我的数据访问层应该都支持。 前面也说了,它是配合我的数据访问层一起工作的, 只要是使用我的数据访问层,哪怕是访问Access数据库,也能有这样的监控效果。