2011-04-15 62 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