這篇文章將介紹在使用我的通用數據訪問層時, 如何監視程序在運行時發生了哪些數據庫的操作。
對于很多數據庫的應用程序來說,在做性能優化時,就必須知道程序在任何用戶操作中,發生了哪些數據庫的調用操作, 如果發現有不合理的調用,或者發現經常在重復執行同樣的操作,就可以采取一些改進的措施。但是,在這個決策之前, 了解程序對數據庫的訪問細節是非常必要的。
我的通用數據訪問層 在提供其它方便功能的同時,也支持監視程序對數據庫的訪問情況, 畢竟對于數據庫的操作是由數據訪問層最后發出的。于是在另一個輔助工具的配合下,可以非常方便地了解程序對于數據庫的操作詳情。
當然了,對于像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數據庫,也能有這樣的監控效果。
Fish Li (李奇峰)
浙公網安備 33010602011771號