Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 检测数据库访问_Database_Logging_Instrumentation - Fatal编程技术网

Database 检测数据库访问

Database 检测数据库访问,database,logging,instrumentation,Database,Logging,Instrumentation,Jeff在其中一个播客中提到,他经常做的一件事就是为数据库调用插入指令,这样他就可以知道是什么查询导致了缓慢等。这是我过去使用SQL Profiler测量的结果,但我感兴趣的是,其他人使用了哪些策略将此作为应用程序的一部分 这仅仅是在每个数据库调用中包含一个计时器并记录结果的情况,还是有一种“更整洁”的方法?也许有一个框架已经为您实现了这一点,或者我可以在Linq to SQL中启用一个标志来提供类似的功能 我主要使用c语言,但也希望看到来自不同语言的方法,我更希望通过“代码”方式在数据库平台方

Jeff在其中一个播客中提到,他经常做的一件事就是为数据库调用插入指令,这样他就可以知道是什么查询导致了缓慢等。这是我过去使用SQL Profiler测量的结果,但我感兴趣的是,其他人使用了哪些策略将此作为应用程序的一部分

这仅仅是在每个数据库调用中包含一个计时器并记录结果的情况,还是有一种“更整洁”的方法?也许有一个框架已经为您实现了这一点,或者我可以在Linq to SQL中启用一个标志来提供类似的功能


我主要使用c语言,但也希望看到来自不同语言的方法,我更希望通过“代码”方式在数据库平台方法(如SQL Profiler)上实现这一点。

如果查询不仅仅是对单个表的简单选择,我总是在MySQL或PostgreSQL上运行解释。如果您使用的是SQL Server,则Management Studio有一个基本相同的显示估计执行计划。了解引擎将如何访问每个表以及将使用哪些索引是很有用的。有时这会让您感到惊讶。

如果您在SQL Management Studio中编写查询,您可以输入:设置统计时间,SQL Server将告诉您解析、编译和执行查询的各个部分所用的时间。
您可以通过处理SqlConnection类的InfoMessage事件来记录这些信息,但我认为使用SQL事件探查器要容易得多。

记录数据库调用、总计时和应用程序中返回的记录字节数是有用的,但它不会提供您所需的所有信息

它可能会显示您不期望的使用模式。它可能会显示您使用逐行访问而不是基于集合的操作的位置

最好使用的工具是SQL Profiler,它可以分析读取次数与CPU和持续时间的关系。您希望避免高CPU查询、高读取和长持续时间


“按读取分组”是一个有用的功能,可以将最糟糕的查询放在首位。

我认为这里要问的重要问题是您使用的是什么数据库平台


例如,在Sybase中,安装可能会解决您的问题,它们提供了从过程调用使用到平均逻辑I/O、CPU时间和索引覆盖率的一整套统计数据。它可以像你希望的那样聪明。

我肯定看到在应用程序运行时使用SQL Profiler的价值,解释或设置统计信息将为你提供有关单个查询的信息,但是,是否有人经常将测量点放入他们的代码中以收集有关正在进行的数据库查询的信息?例如,一个表上的查询最初执行得很好,但随着行数的增加,变得越来越慢

如果您使用的是MySQL或Postgre,那么有各种工具可以实时查看查询活动,但我还没有找到一种工具可以像SQL Profiler那样测量查询性能


我想知道是有还是应该有?与之类似的是,它只需插入即可为您提供信息,而无需额外努力。

如果您喜欢Firebird,您可能想观看。 我们将很快推出Firebird DBA的实时监控工具


如果您使用Hibernate,我使用Java版本,我会想象NHibernate有类似的功能,您可以让Hibernate收集关于许多不同事物的统计信息。例如,见: