我想列出页面执行的所有查询,并记录页面执行的所有查询。我正在使用MYSQL。谁能帮我这个?
答案 0 :(得分: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
}
然后,您必须确保通过这些过程路由所有请求。
答案 1 :(得分: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开始和结束时间,并从db:
中选择所有查询SELECT * FROM mysql.general_log WHERE Time > min AND Time < max AND user_host LIKE '%log_asp_user%'
答案 2 :(得分:0)
当我需要在SQL服务器中查找正在执行的查询时,我使用分析器来捕获所有查询。我不认为这适用于MYSQL,但你可以找到一个等效的。
如果没有等价物,那么假设所有查询都由一个类处理以在数据库上执行它们,那么记录通过它的命令就不会花费太多。
您可以向该类添加一个属性,以确定是否记录了命令,并为当前页面启用它。
答案 3 :(得分:0)
MySQL可以生成查询的日志文件,因此如果您能够独立运行应用程序(即,没有其他用户同时访问数据库),您应该清楚地了解您的代码在做什么只需运行应用程序然后查看查询日志即可。
有关MySQL日志记录的更多信息,请参阅此处:http://dev.mysql.com/doc/refman/5.1/en/query-log.html
但听起来我觉得你想对你的系统进行某种分析,可能是为了调查和提高性能。在这种情况下,我建议使用适当的代码分析工具进行调查。以下是MSDN相关文章的链接,可帮助您入门:http://msdn.microsoft.com/en-us/library/3xxk09t8%28v=vs.71%29.aspx