2011-04-15 21 views

回答

2

您應該考慮從頁面中刪除查詢並將其抽象爲具有集成日誌記錄機制的公用數據提供程序。有許多模式(MVP,MVC,MVVM),您可以從中學習如何解決此問題。當你分開你的活動(數據訪問,業務邏輯,演示文稿)時,你會發現管理每個單獨的部分更容易。

如果您無論出於何種原因都無法適應這樣的數據訪問實踐,那麼您可以簡單地將查詢過程統一爲幾個函數(根據您的返回類型),以便在aspx中看起來像這樣。 CS:

protected DataSet getDataSet(iDataCommand command) 
{ 
//log the request 
try 
{ 
//open the connection 
//execute the command 
} 
catch 
{ 
//log failure 
} 
//log success 
//return the result 
} 

那麼你就必須要一定的路由所有通過這些過程的請求。

0

您可以爲mysql創建特殊用戶,名稱類似於log_asp_user。比添加需要權限並在db中設置幾個參數:

SET GLOBAL general_log = ON; 
SET GLOBAL log_output = 'FILE,TABLE'; 
SET GLOBAL log_queries_not_using_indexes = ON; 
SET GLOBAL long_query_time = 1; 

它需要將所有查詢記錄到mysql。 比保存在ASP開始和生成頁面的結束時間,然後從數據庫中的所有查詢:

SELECT * FROM mysql.general_log WHERE Time > min AND Time < max AND user_host LIKE '%log_asp_user%' 
0

當我需要找到查詢被執行在SQL服務器我使用Profiler來捕獲所有的查詢。我不認爲這將適用於MYSQL,但你可能能夠找到一個等價的。

如果沒有等價物,那麼假定您的所有查詢都由單個類處理以在數據庫上執行它們,那麼記錄通過它的命令時不會花費太多。

您可以向該類添加屬性以確定是否記錄命令,並僅爲當前頁面打開它。

0

MySQL可以產生一個查詢日誌文件,所以如果你能夠獨立運行你的應用程序(即沒有其他用戶同時點擊數據庫),你應該清楚你的代碼是什麼只需運行應用程序然後查看查詢日誌即可。

在這裏看到關於MySQL日誌的詳細信息:http://dev.mysql.com/doc/refman/5.1/en/query-log.html

但是就像你想要做一些你的系統上剖析excersise,可能是爲了調查和改善性能的它的聲音給我。在這種情況下,我建議使用正確的代碼分析工具進行調查。以下是MSDN上相關文章的鏈接,以幫助您入門:http://msdn.microsoft.com/en-us/library/3xxk09t8%28v=vs.71%29.aspx

相關問題